/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 开发环境中设置此编译器选项
打开项目的“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择“配置属性”>“C/C++”>“命令行”属性页。
在“附加选项”框中输入编译器选项。
以编程方式设置此编译器选项
示例
以下命令行预处理 ADD.C
,保留注释,添加 #line
指令并在标准输出设备上显示结果:
CL /E /C ADD.C