我们如何检查是否定义了宏,如果定义了什么值? 我试过做gdb,但我们看不到GDB中的宏,因为MACRO只在预编译时被替换。
在GCC编译器中是否有任何方法可以看到预编译文件,该文件是在创建目标文件(* .o)之前由编译器创建的?
答案 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;
}