http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57345
signupnathan at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|DUPLICATE |--- --- Comment #4 from signupnathan at gmail dot com --- First, in this example, the first #if evaluates true, so I wouldn't think it should even go on to evaluate the #endif and #else. Secondly, this code fails as well: #include <stdio.h> int main (){ #if "foo" == "foo" printf("foo matches"); #endif return 0; } with this error: /tmp/foo.c: In function ‘main’: /tmp/foo.c:4:9: error: token ""foo"" is not valid in preprocessor expressions It doesn't seem to be to be a duplicate as they were evaluating numericals. This is evaluating strings.