打印所有已定义的宏

时间:2014-06-24 13:58:16

标签: c macros

我正在尝试重构一段遗留代码,我想要在源代码的某个点定义的所有宏的快照。代码导入了大量的标题等,手动跟踪它们有点乏味。

这样的东西
#define FOO 1


int myFunc(...) {
    PRINT_ALL_DEFINED_THINGS(stderr)

    /* ... */
}

预计输出中的某个地方

MACRO: "FOO" value 1

我正在使用gcc,但如果它们更容易完成此任务,则可以访问其他编译器。

编辑:

链接的问题没有为我提供正确的输出:

#include <stdio.h>

#define FOO 1

int main(void) {
    printf("%d\n", FOO);
}

#define FOO 0

运行时非常清楚地打印1,但gcc test.c -E -dM | grep FOO给我0

1 个答案:

答案 0 :(得分:1)

要转储所有可以运行的定义:

gcc -dM -E file.c

检查GCC dump preprocessor defines

所有定义它将转储将是定义的值(或最后重新定义的),您将无法在所有这些代码部分中转储定义值。

您还可以附加选项“-Wunused-macro”,以便在重新定义宏时发出警告。