如何在具有特定名称x或y的输出文件中保存le预处理器?
我尝试了命令行:
gcc -E -o pgcd.c x.o
但它似乎不是解决方案。
ps:在编译之前文件不存在,我只是将预处理器保存在名为i的文件中。
感谢您的帮助。
答案 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
不同之处在于,在预处理阶段之后,文件的编译不会停止)。