2010-10-18 219 views
10

我改寫了一個簡單的C++程序,使用unix作爲變量名。但程序編譯失敗。C++預處理器

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

我到這個網站上,通過說unix是預定義宏等於1幫助我在互聯網上搜索了很多之後。

我想知道所有這些預定義的宏的列表。

+5

預定義的宏,在**小寫**?看起來很奇怪:o – ereOn 2010-10-18 10:05:35

+0

相反,如果您使用的是IDE,您可以將顯示的宏的顏色設置爲容易識別的顏色。 Visual Studio擁有它。 – 2010-10-18 10:12:10

回答

22

您可以通過使用GNU預處理器cpp作爲列出所有的預定義宏:

cpp -dM file.cpp 

還要注意的是宏如unixlinux是非標準,你可以通過使用-ansi編譯標誌爲禁用它們:

g++ -ansi file.cpp 

而且你可以使用-ansi標誌與cpp也得到所有標準的預定義宏的列表:

cpp -dM -ansi file.cpp 
1

我不認爲有你所要求的那跨越每一個潛在的平臺提供這樣一份名單。你可能想看到Pre-defined macros欲瞭解更多信息。 'gcc -dM'將在Linux上運行。

1
$ uname 
Linux 

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