是否可以使用gcc -E
实现类似的内容?
src.c:
z
#define FOO bar
z
实际预处理结果:
# 1 "src.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "src.c"
z
z
所需的预处理结果:
# 1 "src.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "src.c"
z
/* #define FOO bar */
z
答案 0 :(得分:0)
它无法直接完成,但如果您真的想要这样做,可以将-dD
选项传递给cpp(通过gcc驱动程序,它可能看起来像-Wp,-dD
;然后进一步处理输出将#define
转换为注释。
-dD
告诉预处理器将#define
指令保留在结果输出中。
答案 1 :(得分:0)
如果您想保留注释的定义,也许您可以学习MCPP手册,我记得这里有一个选项。
至少-C
保留了注释,-K
被描述为“将宏注释嵌入注释中”。
https://linux.die.net/man/1/mcpp
What does "macro annotations embedding in comments" mean in mcpp?
如果这不起作用,则必须创建一个解析器。要么将clang用作库,然后对预处理器令牌进行迭代。或使用AntlR自己做(有很多现成的C语法可供使用)