我正在尝试重构一段遗留代码,并且我想要在源中的某个点定义的所有宏的快照.代码导入了一些荒谬的标题等,手动跟踪它们有点乏味.
就像是
#define FOO 1
int myFunc(...) {
PRINT_ALL_DEFINED_THINGS(stderr)
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
预计输出中的某个地方
MACRO: "FOO" value 1
Run Code Online (Sandbox Code Playgroud)
我正在使用gcc,但如果它们更容易完成此任务,则可以访问其他编译器.
编辑:
链接的问题没有给我正确的输出:
#include <stdio.h>
#define FOO 1
int main(void) {
printf("%d\n", FOO);
}
#define FOO 0
Run Code Online (Sandbox Code Playgroud)
1
运行时打印非常清晰,但gcc test.c -E -dM | grep FOO
给出0
要转储所有定义,您可以运行:
gcc -dM -E file.c
Run Code Online (Sandbox Code Playgroud)
所有将转储的定义将是定义(或最后重新定义)的值,您将无法转储代码的所有这些部分中的定义值。
您还可以附加选项“-Wunused-macro”以在重新定义宏时发出警告。
归档时间: |
|
查看次数: |
1282 次 |
最近记录: |