_MSC_VER是否依赖于工具包版本?

时间:2013-12-22 11:35:15

标签: c++ visual-studio-2013

我正在为使用Visual Studio 2010编译的Ruby库编写Ruby C扩展。(我无法改变这一点,或者重新编译我正在构建的Ruby核心,因为它嵌入在第三方应用程序中。)< / p>

我的项目从Visual Studio 2010开始,但后来我开始使用Visual Studio 2013而没有升级项目 - 所以它仍在使用VS2010工具包。

在我需要使用的Ruby include头中有一个检查:

#if _MSC_VER != 1600
#error MSC version unmatch: _MSC_VER: 1600 is expected.
#endif

现在,我想,因为我在我的项目中使用VS2010工具包,这个检查仍然会在VS2013中传递。这就是我困惑的地方:

解决方案构建并创建有效的.so文件,输出中没有警告或错误,但我刚发现错误列表显示警告。智能感知将为1800显示_MSC_VER - 但它会编译。

1   IntelliSense: #error directive: MSC version unmatch: _MSC_VER: 1600 is expected.    c:\Users\Thomas\Documents\subd\ThirdParty\include\ruby\win32\i386-mswin32_100\ruby\config.h 4

MSC version unmatch: _MSC_VER: 1600 is expected

那么这里发生了什么?

当我的工具包设置为v100时,Visual Studio是否使用VS2010编译器? (然后我希望_MSC_VER1600。)

#warning指令不是阻止编译器的东西吗?

IntelliSense是否未获取工具包版本,而是始终假设_MSC_VER1800

1 个答案:

答案 0 :(得分:1)

_MSC_VER直接绑定到工具包,而不是IDE。

有缺陷的Intelisense在VS2012中也表现相同(使用Vs2010工具包)......