5

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

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

4

2 回答 2

7

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

于 2012-08-14T13:38:02.587 回答
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;
}
于 2012-08-14T14:14:00.163 回答