gpt4 book ai didi

c - 打印所有定义的宏

转载 作者:太空狗 更新时间:2023-10-29 15:07:11 26 4
gpt4 key购买 nike

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

有点像

#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

最佳答案

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

gcc -dM -E file.c

检查 GCC dump preprocessor defines

所有将转储的定义都是已定义(或上次重新定义)的值,您将无法转储所有这些代码部分中的定义值。

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

关于c - 打印所有定义的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com