https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69683
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Juan Rada-Vilela from comment #0) > BUT it is expected from the compiler to ignore everything within the > `#ifdef` because `X` was not defined. The compiler still has to do tokenization to determine where the end of the #ifdef block is. Similarly you get a warning for: #if 0 These aren't valid tokens. #endif q.cc:2:11: warning: missing terminating ' character (And this obviously isn't "major" because it's only a warning!)