使用/ p参数(对文件执行预处理)编译项目(VS 2008)不会编译

时间:2010-08-25 20:38:42

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

我有一个C ++项目,我想查看预处理器输出,看看有些#defines和宏看起来像什么。我尝试了/p开关打开预处理到编译器的文件选项(它关闭完整编译并只运行预处理器)但我的项目现在拒绝编译并显示一长串错误,从以下开始:

  

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

当然,项目在没有/p参数的情况下编译正常。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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