(no title)
NotPaidToPost | 6 years ago
The preprocessor does macro expansion, the compiler compiles the result.
The compiler does not see FLAG_BIT1 ^ FLAG_BIT3, it only sees the result, e.g. 2^32.
Therefore to catch only explicit 2^32 the warning should come from the preprocessor... Nice mess created right there.
sherincall|6 years ago
Interestingly, msvc can also do this, by virtue of not even having a distinct preprocessor phase at all.