我可以在预处理器和编译器之间挤压自己的程序吗?

时间:2010-10-29 07:44:56

标签: c++ linux compiler-construction g++ c-preprocessor

这是一个愚蠢的问题,还是我可以指定g ++来使用预处理器和编译器之间的程序?

或者,我知道我可以在文件上运行预处理器(因此所有文件)。然后我猜测有一个只能运行编译器的开关。所以我可以手动调用这两个并将我的程序放在其间。如果是这样,我如何只运行编译器(和链接器?)?

我宁愿选择第一种方法,因为我们的建造者可能不同意我的意见:)。

2 个答案:

答案 0 :(得分:2)

要运行替代预处理器,man page建议使用-no-integrated-cpp-B

我对此没有经验,所以建议您阅读the man page中的相关部分。


或者,您可以通过告诉g ++该语言是“预处理的C ++”来运行编译器而不调用预处理器:

g++ -x c++-cpp-output

g ++还会将后缀为.ii的文件识别为预处理的C ++,因此管道变为:

source.cpp -> source.ii: g++ -o source.ii -E source.cpp
source.ii -> source.custom.ii: <custom step>
source.custom.ii -> source.o: g++ -o source.o -c source.custom.ii
source.o -> source: g++ -o source source.o

答案 1 :(得分:0)

查看-Xpreprocessor选项,这允许您定义新的预处理器解释