Re: pragma GCC diagnostic ignored "-Wundef"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"ml.lattuada@xxxxxxxxx" <ml.lattuada@xxxxxxxxx> writes:

> I have a problem with undef and diagnostic pragma and I am not sure if I am 
> doing something wrong or it's a GCC bug.
>
> The following code:
>
> #pragma GCC diagnostic ignored "-Wundef"
> #if FOO
> #endif
> int main (void) { return 42; }
>
> compiled in this way:
>
> gcc -o test test.c -Wundef -Werror
>
> does not give any error.
> On the contrary if I compile it with g++
>
> g++ -o test test.c -Wundef -Werror
>
> gives
>
> test.c:2:5: error: "FOO" is not defined [-Werror=undef]
> cc1plus: all warnings being treated as errors
>
> gcc version is:
> gcc (Debian 4.7.0-8) 4.7.0
>
> Why does preprocessor have this different behavior?

It's a bug.  The C++ parser lexes the entire file first, and then parses
it.  The #pragma processing is deferred until parsing, but the
preprocessor reports the warning during lexing.

The C parser lexes as it goes, so it processes the #pragma before the
preprocessor reports the warning.

Please open a bug report about this if there isn't one open already.
Thanks.

Ian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux