What is the reason for having unreserved identifiers as built-in macros in gcc?
Today I stumbled upon a rather interesting compiler error: int main() { int const unix = 0; // error-line return unix; } Gives the following message with gcc 4.3.2 (yes, ancient...): error: expected unqualified-id before numeric constant which is definitely quite confusing. Fortunately, clang (3.0) is a little more helpful (as usual): error: expected unqualified-id int const unix = 0 ^ <built-in>:127:14: note: expanded from: #define unix 1 ^ I certainly did not expect unix , which is neither written in upper-case nor begin with underscore to be a macro, especially a built-in one. I checked the