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)
有没有办法可以在顶部省略那些额外的行?
这些不仅仅位于顶部 - 而是它们是C预处理器用于将某些行来自的源代码位置传递给C编译器的行标记.
使用GCC这很容易,因为GCC支持-P切换,llvm Clang也是如此:
-P.禁止在预处理器的输出中生成线标记.当在非C代码上运行预处理器时,这可能很有用,并且会被发送到可能被行标记混淆的程序.
因此,使用gcc -E -P -x c.
此外,我不会使用-C(保留注释),因为它似乎与gcc隐式头文件添加了一些注释.