http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57757
--- Comment #3 from Harald van Dijk <harald at gigawatt dot nl> --- Updated testcase, tested with : #define ID(x) x extern ID("C")void exit(int); int main() { exit(0); } This should be accepted, and is, except when -save-temps is used: $ ~/gcc-run/bin/g++ -std=c++11 -c test.cc $ ~/gcc-run/bin/g++ -std=c++11 -save-temps -c test.cc test.cc:2:8: error: expected unqualified-id before ‘STRING_USERDEF’ token extern ID("C")void exit(int); ^ test.cc: In function ‘int main()’: test.cc:3:20: error: ‘exit’ was not declared in this scope int main() { exit(0); } ^ $ ~/gcc-run/bin/g++ --version g++ (GCC) 4.9.0 20130629 (experimental) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Using sources from git mirror, commit 801070f5acc11e86fd587b583ebe2ce900ab7a5d, corresponding to svn rev 200565.