有没有办法知道我是否在特定的Microsoft Visual Studio版本下编译?


当前回答

在visual studio中,去帮助| about,看看你用来编译应用程序的visual studio版本。

其他回答

在visual studio中,去帮助| about,看看你用来编译应用程序的visual studio版本。

_MSC_VER应该定义为特定的版本号。您可以对它使用#ifdef,也可以使用实际的define并进行运行时测试。(如果出于某种原因,你想根据编译器的不同来运行不同的代码?是的,也许你在找#ifdef。:))

作为一个更一般的答案,http://sourceforge.net/p/predef/wiki/Home/维护了一个宏列表,用于检测特定的编译器、操作系统、体系结构、标准等。

通过使用_MSC_VER宏。

是的,_MSC_VER是一个宏,它会让你得到编译器的版本。Visual c++的最新版本的形式是<compiler-major-version>.00。<build-number>,其中00是副编号。所以_MSC_VER将计算为<主版本><小版本>。

你可以使用这样的代码:

#if (_MSC_VER == 1500)
   // ... Do VC9/Visual Studio 2008 specific stuff
#elif (_MSC_VER == 1600)
   // ... Do VC10/Visual Studio 2010 specific stuff
#elif (_MSC_VER == 1700)
   // ... Do VC11/Visual Studio 2012 specific stuff
#endif

它出现在编译器的连续版本之间的更新,没有修改编译器的小版本,所以下面的代码是不需要的:

#if (_MSC_VER >= 1500 && _MSC_VER <= 1600)
   // ... Do VC9/Visual Studio 2008 specific stuff
#endif

访问更详细的版本信息(如编译器构建号)可以使用其他内置的预处理器变量在这里找到。