Search code examples
gccpragma

Why does GCC 4.2.1 ignore #pragma GCC diagnostic ignored "-Wcast-qual" under certain conditions?


Here is my test program:

#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);
}

Here is my compile:

$ 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
$ 

And here is the compile without the -Wcast-qual:

$ g++ x.cpp
$ 

I've used #pragma GCC diagnostic ignored in other places of my code without problems. Here it is not working. Can somebody tell me why?


Solution

  • It's a compiler bug on the Mac. GCC 4.7.2 on Linux does not have this problem. Neither does clang++. On the Mac you should try to use clang++, not g++.

    Apple should update its compiler.