我们如何检查是否定义了宏,如果定义了,那么它的值是什么?我尝试做 gdb,但我们看不到 GDB 中的宏,因为宏仅在预编译时被替换。
在 GCC 编译器中有什么方法可以让我们看到预编译文件,该文件是在创建目标文件 (*.o) 之前由编译器创建的?
您可以使用-E
gcc 的标志来获取预处理的输出。此输出将包含扩展的宏而不是它们的名称。您可以在此处找到更多信息。
在 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;
}