【问题标题】:Compiling a project (VS 2008) with the /p argument (preprocess to a file) doesn't compile使用 /p 参数(预处理到文件)编译项目(VS 2008)不会编译
【发布时间】:2011-04-03 22:58:50
【问题描述】:

我有一个 C++ 项目,我想查看预处理器输出以了解一些#defines 和宏的外观。我尝试使用/p 开关打开编译器对文件选项的预处理(它会关闭完整编译并仅运行预处理器),但我的项目现在拒绝编译并显示一长串错误,开头为:

“无法打开包含文件:'stdafx.h':没有这样的文件或目录”。

当然,没有/p 参数,该项目编译得很好。有什么建议吗?

【问题讨论】:

  • 暂时去掉预编译头的使用(命令行上的/Yu)?

标签: c++ visual-studio-2008 c-preprocessor


【解决方案1】:

如果您自己运行cl.exe,那么您需要提供与IDE 在构建时所做的所有相同的参数,否则它无法找到所有包含路径和预处理器宏。但是,还有另一种方法可以做到这一点。在项目文件中,选择所需的 .cpp 文件,然后选择 Properties > C++ > Preprocessor > Generate preprocessor file。然后编译.cpp文件。

这将在输出目录中生成预处理文件(我认为是file.i)。遗憾的是,没有更简单的方法来选择文件并点击“预处理”,但这可能很容易用 VisualStudio 宏完成。之后不要忘记重新设置选项。

【讨论】:

    【解决方案2】:

    当您使用/p 编译时,所有其他选项(如/I)是否仍然相同?听起来它没有拾取你的头文件。或者,因为它正在尝试预处理所有包含它不再生成 stdafx.h 预编译标头 - 您可以尝试直接包含所有需要的标头而不是那个。

    【讨论】:

    • 这是个好主意。就我而言,仅仅查看预处理的输出似乎需要付出很多努力,因为该项目相当大(100 个源文件)。上述方法适用于我的目的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多