有没有办法省略C-preprocessor输出顶部的定义(行标记)?

Ant*_*nio 6 c gcc preprocessor llvm

如果我处理以下test.def输入文件gcc -C -x c -E test.def:

#define TEST foo 
int TEST;
Run Code Online (Sandbox Code Playgroud)

我希望输出只是:

int foo;
Run Code Online (Sandbox Code Playgroud)

相反,我得到:

# 1 "test.def"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.def"

int foo;
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在顶部省略那些额外的行?

Ant*_*ala 7

这些不仅仅位于顶部 - 而是它们是C预处理器用于将某些行来自的源代码位置传递给C编译器的行标记.


使用GCC这很容易,因为GCC支持-P切换,llvm Clang也是如此:

-P.禁止在预处理器的输出中生成线标记.当在非C代码上运行预处理器时,这可能很有用,并且会被发送到可能被行标记混淆的程序.

因此,使用gcc -E -P -x c.

此外,我不会使用-C(保留注释),因为它似乎与gcc隐式头文件添加了一些注释.