该文件的基名称与源文件和 .i 扩展名相同。 在此过程中,将执行所有预处理器指令,执行宏扩展,并删除注释。 若要在预处理输出中保留注释,请使用 /C(在预处理期间保留注释) 选项和 /EP。

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

/P 选项禁止编译。 它不会生成 .obj 文件,即使使用 /Fo(对象文件名) 也是如此。 必须重新提交预处理的文件进行编译。 /P 还禁止来自 /FA、/Fa 和 /Fm 选项的输出文件。 有关详细信息,请参阅 /FA、/Fa(列表文件) /Fm(名称映射文件)

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

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

  • 选择“配置属性”>“C/C++”>“预处理器”属性页。

  • 修改 Generate Preprocessed File 属性。

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

  • 请参阅 GeneratePreprocessedFile
  • 下面的命令行预处理 ADD.C ,保留注释,添加 #line 指令,并将结果写入文件 ADD.I

    CL /P /C ADD.C
    

    MSVC 编译器选项
    MSVC 编译器命令行语法
    /Fi(预处理输出文件名)