使用`gcc -E`将预处理程序指令保存为注释

时间:2015-11-27 15:38:41

标签: gcc c-preprocessor

是否可以使用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

2 个答案:

答案 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语法可供使用)