指示 CC 驱动程序仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout(标准输出)。此时,不进行编译,且不生成 .o 文件。
此选项会导致输出中包含预处理程序类型的行号信息。
要在源代码涉及模板时编译 -E 选项的输出,可能需要将 -template=no%extdef 选项与 -E 选项一起使用。如果应用程序代码使用“定义分离的”模板源代码模型,使用这两个选项可能仍然无法编译 -E 选项的输出。有关更多信息,请参考有关模板的章节。
该选项用于确定预处理程序所进行的更改。例如,以下程序 foo.cc 会生成A.2.12.1 示例中所示的输出。
#if __cplusplus < 199711L int power(int, int); #else template <> int power(int, int); #endif int main () { int x; x=power(2, 10); } . |
example% CC -E foo.cc #4 "foo.cc" template < > int power (int, int); int main () { int x; x = power (2, 10); } |
如果代码包含采用“独立定义”模型的模板,此选项的输出可能不能用作 C++ 编译的输入。
–P