我重写了一个简单的C++程序,使用unix
作为变量名。但是程序编译失败了。
#include <iostream>
int main() {
int unix = 1;
return 0;
}
在互联网上搜索了很多后,我找到了这个网站,它告诉我unix
是一个预定义的宏,等同于1
。
我想知道所有这样的预定义宏列表。
我重写了一个简单的C++程序,使用unix
作为变量名。但是程序编译失败了。
#include <iostream>
int main() {
int unix = 1;
return 0;
}
在互联网上搜索了很多后,我找到了这个网站,它告诉我unix
是一个预定义的宏,等同于1
。
我想知道所有这样的预定义宏列表。
你可以通过使用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
$ uname
Linux
$ cpp -dM <<<'' | grep unix
#define __unix__ 1
#define __unix 1
#define unix 1