【发布时间】:2017-10-20 04:13:46
【问题描述】:
作为this question says,我需要一个办法
gcc -E -c main.cc -o main.o
在我的编译器上,来自 QNX,但基于 gcc 4.4.2,使用 -save-temps 只会给我汇编文件(而不是预处理器文件)。
如果我像上面的命令一样添加-E,预处理器输出将保存到main.o。
我需要一种解决方案,在一次调用 gcc 时,在具有上述约束的情况下进行编译和输出预处理器。
【问题讨论】:
-
XY 问题。分两步有什么问题?
-
@Olaf 花费了两倍的时间。预处理器在编译期间已经被调用,为什么这不可能呢?
-
那不一样。在现代编译器上,预处理和编译不一定有两个不同的通道。如果有两个阶段,您很可能不会失去太多性能。但是,如果您在加速编译之后,请使用构建工具;这将比您似乎担心的节省更多的时间。
-
根据this site 关于
-E选项:(...) and one of the options -c, -S, or -E to say where gcc is to stop- “停止”不会留下太多希望一步到位。 -
@Barmar:当被问到时,它会生成一个特殊的帮助。当它正常继续时,它永远不会生成文本表单。它同时通过预处理和 C/C++ 解析将文件解析为内存中的语法树。
标签: c++ gcc preprocessor