c++ - 如何检测我是否正在使用特定的 Visual Studio 版本编译代码?

标签 c++ visual-studio

有什么方法可以知道我是否在特定的 Microsoft Visual Studio 版本下编译?

最佳答案

_MSC_VER 可能还有 _MSC_FULL_VER 是您需要的。您也可以查看visualc.hpp在最近的任何 boost 安装中获取一些使用示例。

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

MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 version 16.4)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 version 16.3)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 version 16.2)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 version 16.1)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 version 16.0)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
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)

上面的版本号当然是指您在 about 框中看到的 Visual Studio 的主要版本,而不是名称中的年份。可以找到完整列表 here . Starting recently ,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
.....

关于c++ - 如何检测我是否正在使用特定的 Visual Studio 版本编译代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70013/

相关文章:

c++ - 任何开源项目都使用 FC++ 吗?

c++ - 为什么我不能使用双冒号在命名空间中前向声明一个类?

c++ - 将类的 vector 写入文件的方法

c# - .NET v4.7 中不存在 TLS1.2

visual-studio - Visual Studio 2013中的错误: “No exports were found that match the constraint”

c# - Visual Studio 的奇怪崩溃 2010

c++ - 使用 unique_ptr 离开范围时堆损坏

visual-studio - Visual Studio-如何摆脱输出窗口?

visual-studio - VS2008 "Get everything..."选项无法解释的结果

c++ - 在 C++ 程序中重写标准 C 库函数