Visual Studio 2005在编译期间忽略预处理程序指令

时间:2009-03-12 21:03:31

标签: c++ visual-studio-2005

我们刚刚找到了一个新的开发人员,我正在尝试用Dev Studio 2005(我们在办公室使用的版本)设置他,我们遇到了一个我以前从未见过的奇怪问题。

我有一些代码可以在我的系统上完美运行,而且他似乎无法编译它。我们已经将问题跟踪到他的dev studio副本,忽略了预处理器指令。

例如,在C / C ++ | Preprocessor | Preprocessor Directives下的项目属性中,我添加了DEFINE_ME。哪个应该转换为编译器的/ D“DEFINE_ME”。它在我的开发环境中确实存在,但它不在他的开发环境中。

我验证了当他从源存储库中检出代码时,他拥有与我相同版本的代码。如果我查看他的项目属性,所有指令都在那里。出于某种原因,他们只是没有传递给编译器。

任何想法?

2 个答案:

答案 0 :(得分:3)

确保在所选解决方案配置中构建的项目配置与您为其配置属性的项目配置相同,和/或您正在配置所有项目配置的属性。新VS安装的一个常见问题是当前的活动解决方案配置是特定于系统的,并且可能默认为与您的不匹配的内容(例如:Release vs Debug)。

您可以在构建输出中查看项目配置,和/或在Configuration Manager中进行检查。

答案 1 :(得分:2)

我最近遇到了与VS2005相同的症状。最终,我能够通过命令行 - 附加选项对话框显式添加我的预处理器定义来解决它:

  

配置属性 - > C / C ++ - >命令行

当我添加'/DPROPERTY'时,它在编译时被识别,而在'预处理器 - >下添加它预处理器定义'什么也没做。奇怪的是,命令行对话框确实显示Visual Studio正在将属性添加到命令行,尽管形式为“/D "PROPERTY"”。

不幸的是,日程安排的压力是什么,我无法深入研究这个问题,以找出潜在的问题是什么,也不是为什么它似乎对我们的一些项目开箱即用,但不是其他。尽管如此,如果你有这种症状,上面的解决办法是值得的。

此外,信用到期的信用:这个想法来自this thread