我使用unix
作为variables名重写了一个简单的C ++程序。 但程序编译失败。
#include <iostream> int main() { int unix = 1; return 0; }
在互联网上search了很多后,我得到了这个网站,帮助我说, unix
是预定义的macros等于1
。
我想知道所有这些预定义的macros的列表。
您可以使用GNU预处理器cpp
列出所有预定义的宏:
cpp -dM file.cpp
另外请注意,像unix
, linux
这样的宏是不标准的,你可以通过使用-ansi
编译标志来禁用它们:
g++ -ansi file.cpp
你也可以用cpp
的-ansi
标志来获得所有标准预定义宏的列表:
cpp -dM -ansi file.cpp
触摸mysymdef.h; g ++ -dM mysymdef.h它将生成一个文件mysymdef.h.gch,它将为您的系统提供所有预定义的符号/宏。 文件是二进制的,但有一些编辑它会工作。
详情请参阅
http://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation
http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html
我不认为有这样一个清单,你要求在每个潜在的平台上都有这个清单。 您可能想要查看预定义的宏以获取更多信息。 “gcc -dM”将在Linux上运行。
$ uname Linux $ cpp -dM <<<'' | grep unix #define __unix__ 1 #define __unix 1 #define unix 1