Oracle Solaris Studio 12.2:C++ 用户指南

A.2.12 –E

对源文件运行预处理程序,但不进行编译。

指示 CC 驱动程序仅对 C++ 源文件运行预处理程序,并将结果发送到 stdout(标准输出)。此时,不进行编译,且不生成 .o 文件。

此选项会导致输出中包含预处理程序类型的行号信息。

要在源代码涉及模板时编译 -E 选项的输出,可能需要将 -template=no%extdef 选项与 -E 选项一起使用。如果应用程序代码使用“定义分离的”模板源代码模型,使用这两个选项可能仍然无法编译 -E 选项的输出。有关更多信息,请参考有关模板的章节。

A.2.12.1 示例

该选项用于确定预处理程序所进行的更改。例如,以下程序 foo.cc 会生成A.2.12.1 示例中所示的输出。


示例 A–1 预处理程序示例 foo.cc


#if __cplusplus < 199711L
int power(int, int);
#else
template <> int power(int, int);
#endif

int main () {
  int x;
  x=power(2, 10);
}
.


示例 A–2 使用 -E 选项时 foo.cc 的预处理程序输出


example% CC -E foo.cc
#4 "foo.cc"
template < > int power (int, int);


int main () {
int x;
x = power (2, 10);
}

警告

如果代码包含采用“独立定义”模型的模板,此选项的输出可能不能用作 C++ 编译的输入。

另请参见

–P