该文件的基名称与源文件和 .i 扩展名相同。 在此过程中,将执行所有预处理器指令,执行宏扩展,并删除注释。 若要在预处理输出中保留注释,请使用 /C(在预处理期间保留注释) 选项和 /EP。
/P 将 #line 指令添加到输出中,在每个包含文件的开头和末尾,以及由预处理器指令删除的行周围,以便进行条件编译。 这些指令对预处理文件的行进行重新编号。 因此,在后续处理阶段生成的错误是指原始源文件的行号,而不是预处理文件的行号。 若要取消生成 #line 指令,请使用 /EP(在不使用 #line 指令的情况下预处理到 stdout) 和 /P。
#line
/P 选项禁止编译。 它不会生成 .obj 文件,即使使用 /Fo(对象文件名) 也是如此。 必须重新提交预处理的文件进行编译。 /P 还禁止来自 /FA、/Fa 和 /Fm 选项的输出文件。 有关详细信息,请参阅 /FA、/Fa(列表文件) 和 /Fm(名称映射文件) 。
打开项目的“属性页” 对话框。 有关详细信息,请参阅 在 Visual Studio 中设置 C++ 编译器和生成属性 。
选择“配置属性”>“C/C++”>“预处理器”属性页。
修改 Generate Preprocessed File 属性。
下面的命令行预处理 ADD.C ,保留注释,添加 #line 指令,并将结果写入文件 ADD.I :
ADD.C
ADD.I
CL /P /C ADD.C MSVC 编译器选项 MSVC 编译器命令行语法 /Fi(预处理输出文件名)
MSVC 编译器选项 MSVC 编译器命令行语法 /Fi(预处理输出文件名)