检查是否定义了宏

Cod*_*ode 5 c macros

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

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

per*_*eal 7

您可以使用-Egcc的标志来获取预处理的输出.此输出将包含展开的宏而不是其名称.您可以在此处找到更多信息.


ryu*_*0ud 5

在 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;
}
Run Code Online (Sandbox Code Playgroud)