/E(预处理到 stdout)

预处理 C 和 C++ 源文件,并将预处理过的文件复制到标准输出设备。

语法

/E

备注

在此过程中,将执行所有预处理器指令,执行宏扩展,并删除注释。 若要在预处理输出中保留注释,还需使用 /C(在预处理期间保留注释)编译器选项。

/E 将 #line 指令添加到输出中,在每个包含文件的开头和末尾,以及由预处理器指令删除的行周围,以便进行条件编译。 这些指令对预处理文件的行进行重新编号。 因此,在后续处理阶段生成的错误是指原始源文件的行号,而不是预处理文件的行号。

/E 选项禁止编译。 必须重新提交预处理的文件进行编译。 /E 还禁止来自 /FA、/Fa 和 /Fm 选项的输出文件。 有关详细信息,请参阅 /FA、/Fa(列表文件)/Fm(名称映射文件)

若要取消 #line 指令,请改用 /EP(在不使用 #line 指令的情况下预处理到 stdout)选项。

若要将预处理输出发送到文件而非 stdout,请改用 /P(预处理到文件)选项。

若要取消 #line 指令并将预处理输出发送到文件,请同时使用 /P 和 /EP。

不能将预编译标头与 /E 选项一起使用。

请注意,在预处理到单个文件时,令牌后不会出现空格。 这可能会导致非法程序或产生意外的副作用。 以下程序已成功编译:

#define m(x) x
m(int)main( )
{
   return 0;
}

但是,如果编译时使用:

cl -E test.cpp > test2.cpp

test2.cpp 中的 int main 误为 intmain

在 Visual Studio 开发环境中设置此编译器选项

  1. 打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性

  2. 选择“配置属性”>“C/C++”>“命令行”属性页

  3. 在“附加选项”框中输入编译器选项。

以编程方式设置此编译器选项

示例

以下命令行预处理 ADD.C,保留注释,添加 #line 指令并在标准输出设备上显示结果:

CL /E /C ADD.C

另请参阅

MSVC 编译器选项
MSVC 编译器命令行语法