检查是否定义了宏

时间:2012-08-14 13:35:50

标签: c macros

我们如何检查是否定义了宏,如果定义了什么值? 我试过做gdb,但我们看不到GDB中的宏,因为MACRO只在预编译时被替换。

在GCC编译器中是否有任何方法可以看到预编译文件,该文件是在创建目标文件(* .o)之前由编译器创建的?

2 个答案:

答案 0 :(得分:7)

您可以使用gcc的-E标志来获取预处理的输出。此输出将包含展开的宏而不是其名称。您可以找到more information here

答案 1 :(得分:4)

在C源文件中,您可以使用#ifdef宏来检查是否定义了宏。

#include <stdio.h>

#ifdef MY_MACRO
char msg[] = "My macro is defined";
#else
char msg[] = "My macro is NOT defined";
#endif

int main(int argc, char **argv) {
    printf("%s\n", msg);

    return 0;
}