On Fri, Mar 5, 2021 at 10:25 PM Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > > And regardless of even _those_ issues, you still should do all the > other syntactic tokenization stuff (ie all the quoting, the the > character handling: 'a' is a valid C token, but if you see the string > "it's" outside of a comment, that's a syntax error even if it's inside > a disabled region. IOW, this is an incorrect file: > > #if 0 > it's a bug to do this, and the compiler should scream > #endif > > because it's simply not a valid token sequence. The fact that it's > inside a "#if 0" region doesn't change that fact at all. So you did > need to do all the tokenization logic. Compilers don't scream that much, only GCC seems to give a warning. I assume it is because it is just undefined rather than a required error/diagnostic, i.e. the "If a ’ or a " character matches the last category, the behavior is undefined." in 6.4. Concerning #pragma once: I actually would like to have a standard #once directive if what is a "seen file" could be defined a bit more precisely. Even if just says it creates a guard with something similar to the result of `__FILE__` would be good enough for many projects out there, and one can still use guards when flexibility is needed and/or corner cases are expected (which, if detected, the compiler could also warn about). Cheers, Miguel