将预处理器指令保留为带有`gcc-E的注释`

将预处理器指令保留为带有`gcc-E的注释`,gcc,c-preprocessor,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 #1“src.c” #

有没有可能通过
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
#1“src.c”
# 1 ""
# 1 ""
#1“src.c”
Z
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
#1“src.c”
# 1 ""
# 1 ""
#1“src.c”
Z
/*#定义FOO-bar*/
Z

这不能直接完成,但如果您真的需要,可以将
-dD
选项传递给cpp(通过gcc驱动程序,它可能看起来像
-Wp,-dD
;然后进一步处理输出,将
#define
转换为注释


-dD
告诉预处理器在结果输出中保留
#define
指令。

如果您想保留define as注释,也许您可以学习MCPP手册,我记得有一个选项。 至少
-C
保留注释,
-K
被描述为“将宏注释嵌入注释”

如果这不起作用,你就必须做一个解析器。要么用clang作为库并迭代预处理器标记。要么用AntlR做你自己的(有许多现成的C语法)

你想解决什么样的问题?