使用-E的GCC预处理器并保存在名为x的文件中

时间:2017-01-10 15:44:20

标签: gcc c-preprocessor

如何在具有特定名称x或y的输出文件中保存le预处理器?

我尝试了命令行:

gcc -E -o pgcd.c x.o

但它似乎不是解决方案。

ps:在编译之前文件不存在,我只是将预处理器保存在名为i的文件中。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

gcc -E file.c

将预处理file.c并将预处理的源代码写入 标准输出(控制台)。所以要保存预处理的输出,重定向 标准输出到您选择的文件:

gcc -E file.c > somefile

somefile 有一个.o扩展名是个坏主意。海湾合作委员会等 工具将.o扩展名解释为文件包含对象的含义 代码,作为编译输出。预处理file.c不会产生 目标代码。它只生成预处理的源代码,稍后您可以编译它。

预处理C源代码的常规文件扩展名为.i.ii用于预处理的C ++源代码)。因此

gcc -E file.c > file.i

是合适的选择。

您会发现file.i包含预处理器行标记,例如

# 1 "file.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "file.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
...
...

如果您不希望这些线标记显示在输出中,请添加-P 选项:

gcc -E -P file.c > file.i

答案 1 :(得分:0)

GCC -save-temps标志还可用于将处理后的文件保存为* .i文件(尽管与-E不同之处在于,在预处理阶段之后,文件的编译不会停止)。