C ++预处理器

我使用unix作为variables名重写了一个简单的C ++程序。 但程序编译失败。

 #include <iostream> int main() { int unix = 1; return 0; } 

在互联网上search了很多后,我得到了这个网站,帮助我说, unix是预定义的macros等于1

我想知道所有这些预定义的macros的列表。

您可以使用GNU预处理器cpp列出所有预定义的宏:

 cpp -dM file.cpp 

另外请注意,像unixlinux这样的宏是不标准的,你可以通过使用-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