如何检测如果我用Visual Studio 2008编译代码?

有什么方法可以知道我是否正在使用Microsoft Visual Studio 2008进行编译?

_MSC_VER和可能_MSC_FULL_VER是你所需要的。 对于一些使用示例,您还可以在最近的任何boost升级安装中检查visualc.hpp。

更新版本的编译器的一些值是:

 MSVC++ 14.1 _MSC_VER == 1911 (Visual Studio 2017) MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017) MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) MSVC++ 9.0 _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1) MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008) MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005) MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003) MSVC++ 7.0 _MSC_VER == 1300 MSVC++ 6.0 _MSC_VER == 1200 MSVC++ 5.0 _MSC_VER == 1100 

上面的版本号当然是指您在Visual框中看到的Visual Studio的主要版本,而不是名称中的年份。 详细的清单可以在这里find。 从最近开始 ,Visual Studio将开始单调地更新它的范围,这意味着你应该检查范围,而不是确切的编译器值。

cl.exe /? 会给出一个使用版本的提示,例如:

 c:\program files (x86)\microsoft visual studio 11.0\vc\bin>cl /? Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86 ..... 

是的_MSC_VER是会给你的编译器版本的macros。 Visual C ++的最后一个版本号是<compiler-major-version>.00.<build-number> ,其中00是次要号码。 所以_MSC_VER将评估为<major-version><minor-version>

你可以使用这样的代码:

 #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 

它出现在编译器的连续发行版之间的更新,没有修改compiler-minor-version ,所以下面的代码是不需要的:

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

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

_MSC_VER应该被定义为一个特定的版本号。 你可以在#ifdef上,或者你可以使用实际的定义并做一个运行时testing。 (如果由于某种原因,你想根据它编译的编译器运行不同的代码?是的,可能你正在寻找#ifdef。:))

通过使用_MSC_VERmacros。

这有点老,但应该让你开始:

 //****************************************************************************** // Automated platform detection //****************************************************************************** // _WIN32 is used by // Visual C++ #ifdef _WIN32 #define __NT__ #endif // Define __MAC__ platform indicator #ifdef macintosh #define __MAC__ #endif // Define __OSX__ platform indicator #ifdef __APPLE__ #define __OSX__ #endif // Define __WIN16__ platform indicator #ifdef _Windows_ #ifndef __NT__ #define __WIN16__ #endif #endif // Define Windows CE platform indicator #ifdef WIN32_PLATFORM_HPCPRO #define __WINCE__ #endif #if (_WIN32_WCE == 300) // for Pocket PC #define __POCKETPC__ #define __WINCE__ //#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern) //#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon) //#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo) #endif 

在visual studio中,去帮助| 关于并查看用于编译应用程序的Visual Studio版本。