这是我的测试程序:
#include <stdio.h>
#pragma GCC diagnostic ignored "-Wcast-qual"
static void proc(char *buf)
{
printf("buf=%p\n",buf);
}
int main(int argc,char **argv)
{
const char *cbuf;
char *buf = (char *)cbuf;
proc(buf);
return(0);
}
这是我的编译:
$ g++ -Wcast-qual x.cpp
x.cpp: In function ‘int main(int, char**)’:
x.cpp:13: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness
$
这是没有-Wcast-qual的编译:
$ g++ x.cpp
$
我在我的代码的其他地方使用#pragma GCC diagnostic ignored
没有问题。这里不行。有人可以告诉我为什么吗?
答案 0 :(得分:0)
它是Mac上的编译器错误。 Linux上的GCC 4.7.2没有这个问题。 clang ++也不是。在Mac上你应该尝试使用clang ++,而不是g ++。
Apple应该更新其编译器。