_MSC_VER可能_MSC_FULL_VER就是您所需要的。您还可以在任何最新的boost安装中检查visualc.hpp,以获得一些用法示例。最新版本的编译器的一些值是:MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)MSVC++ 9.0 _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1)MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)上面的版本号当然是指您在“关于”框中看到的Visual Studio的主要版本,而不是名称中的年份。完整的列表可以在这里找到。从最近开始,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是将为您提供编译器版本的宏。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可以在此处使用其他内置的预处理程序变量来访问更详细的版本信息(例如,编译器内部版本号)。