GCC 和 Oracle Developer Studio 编译器预定义了不同的符号。
要查看 gcc 为 C 和 C++ 预定义的符号,请执行以下操作:
$ gcc -E -dM -xc /dev/null $ g++ -E -dM -xc++ /dev/null
要查看 Oracle Developer Studio C 和 C++ 编译器预定义的符号,请执行以下操作:
$ cc -xdumpmacros -E /dev/null $ CC -xdumpmacros -E /dev/null
使用各种编译器选项可能会影响预定义的宏及其在所有编译器中使用时的值。–m32|–m64 选项和语言选项 (std=v) 尤其会影响预定义的宏。
此输出也包括在 _GNU_SOURCE 宏中定义的源代码,该宏用来为各种不可移植的函数(大多在 glibc 中定义)启用头文件声明。有关更多信息,请参见 http://stackoverflow.com/questions/5582211/what-does-define-gnu-sourceimply。