在gcc中已经定义了哪些C预处理器宏?

时间:2009-07-27 05:52:40

标签: c gcc macros c-preprocessor

gcc中,如何在编译C程序期间检查 C 预处理器定义是什么,特别是定义了哪些标准或特定于平台的宏定义?< / p>

3 个答案:

答案 0 :(得分:16)

预定义的宏取决于标准和编译器实现它的方式。

对于海湾合作委员会:http://gcc.gnu.org/onlinedocs/cpp/Predefined-Macros.html

对于Microsoft Visual Studio 8:http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx

此维基百科页面http://en.wikipedia.org/wiki/C_preprocessor#Compiler-specific_predefined_macros列出了如何转储某些预定义的宏

答案 1 :(得分:4)

编译器和平台的特定组合的预定义宏的可能来源是Sourceforge的Predef project。他们试图在所有平台上的所有C和C ++编译器中维护所有预定义宏的目录。在实践中,他们覆盖了GCC的相当多的平台,以及一些其他编译器。

他们通过仔细阅读文档以及shell脚本来实现这一目标,该脚本可以确定哪些宏是预定义的:它会尝试它们。我的理解是它实际上尝试了它可以在编译器和/或预处理器的可执行映像中找到的每个字符串,以查看它是否具有预定义。

他们很乐意将他们尚未拥有的任何信息添加到他们的数据库中。

答案 2 :(得分:0)

  

程序可以将宏定义为一个   点,稍后删除该定义,   然后提供不同的   之后的定义。因此,在   程序中的不同点,a   宏可能有不同的定义,   或根本没有定义。