http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55252
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-11-10 23:20:36 UTC --- (In reply to comment #4) > On the other hand, this is a very contrived testcase. I > wouldn't expect in normal code that the expansion point to be in a > system-header and the spelling point in a non-system-header. It's not that contrived, here's a more realistic example: #define fixed 1 #include <iostream> int main() { } This gives a very unhelpful error: t.cc:1:15: error: expected unqualified-id before numeric constant #define fixed 1 ^ t.cc:1:15: error: expected unqualified-id before numeric constant #define fixed 1 ^ t.cc:1:15: error: expected initializer before numeric constant