C++预处理器

11

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

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

在互联网上搜索了很多后,我找到了这个网站,它告诉我unix是一个预定义的宏,等同于1

我想知道所有这样的预定义宏列表。


5
预定义宏用小写字母?感觉很奇怪哦 :o - ereOn
相反,如果您正在使用集成开发环境(IDE),您可以将显示的宏的颜色设置为易于识别的颜色。Visual Studio就有这个功能。 - Samrat Patil
4个回答

24

你可以通过使用GNU预处理器cpp来列出所有预定义宏,如下所示:

cpp -dM file.cpp

还要注意,像unixlinux这样的宏是非标准的,您可以通过使用-ansi编译标志来禁用它们:

g++ -ansi file.cpp

你也可以在使用 cpp 时添加 -ansi 标志,以获取所有标准预定义宏的列表:

cpp -dM -ansi file.cpp

4

1
$ uname 
Linux

$ cpp -dM <<<'' | grep unix
#define __unix__ 1
#define __unix 1
#define unix 1

1

我认为并没有您所要求的适用于所有潜在平台的列表可用。您可能想查看预定义宏以获取更多信息。'gcc -dM'将在Linux上运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接