为什么GCC 4.2.1忽略#pragma GCC诊断在某些条件下忽略“-Wcast-qual”?

时间:2011-10-17 16:41:57

标签: gcc pragma

这是我的测试程序:

#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没有问题。这里不行。有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

它是Mac上的编译器错误。 Linux上的GCC 4.7.2没有这个问题。 clang ++也不是。在Mac上你应该尝试使用clang ++,而不是g ++。

Apple应该更新其编译器。