c - 具有相应版本的 MSVC 功能列表?

标签 c visual-c++

我正在尝试查找 MSVC 功能及其出现的相应版本的列表,这样我就可以做这样的事情:

#if defined(_MSC_VER) && _MSC_VER > X
#define MY_INLINE __forceinline
#else
#define MY_INLINE inline
#endif

gcc 为例,有一个列表 minimum version for all attributes . MSVC 有类似的东西吗?

最佳答案

本文介绍了从 Visual Studio 2015Visual Studio 2003 的所有重大更改,本文中的术语“新行为”或“现在”指的是到 Visual Studio 2015 及更高版本。术语“旧行为”和“之前”指的是 Visual Studio 2013 和更早版本:


本文介绍了 Visual C++ 中的 C++11/14/17 功能:


下表显示了编译器对新 C++ 功能的支持:


以下是我找到的其他一些引用资料:


此链接总结了 ISO C++03、C++11、C++14、C++17 和 Draft C++20 语言标准的编译器功能和 C++ 编译器在 Visual 中的标准库功能的一致性Studio 2017 及更早版本:


这里是关于使用Internal Version Numbering的信息MSVC 的:

The predefined macro _MSC_VER indicates the major and minor version numbers of the Visual C++ compiler. The macro's value is an integer literal in which the last two digits indicate the minor version number and the preceding digits indicate the major version number.

From Visual Studio 2017, _MSC_VER is incremented monotonically at every Visual C++ toolset update. Thus, for example, the version of MSVC++ 14.1 that ships with Visual Studio 2017 version 15.3.0 sets _MSC_VER to 1911. Microsoft recommends using the >= operator to test the value of _MSC_VER.

以下是各种版本的 Visual C++ 编译器的 _MSC_VER 值:

MSC    1.0   _MSC_VER == 100
MSC    2.0   _MSC_VER == 200
MSC    3.0   _MSC_VER == 300
MSC    4.0   _MSC_VER == 400
MSC    5.0   _MSC_VER == 500
MSC    6.0   _MSC_VER == 600
MSC    7.0   _MSC_VER == 700
MSVC++ 1.0   _MSC_VER == 800
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 14.1  _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)

关于c - 具有相应版本的 MSVC 功能列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49927559/

相关文章:

我们可以声明、定义变量并为其赋值,然后在另一个文件中使用这些变量吗?

c - 多线程编程中的exit命令是完全退出吗?

c++ - 在 VC++ 中编译头文件时遇到问题

visual-studio - 使用标准 #ifndef MS-VC++ 覆盖 #pragma 一次

C程序显示从用户输入的3个数字中的最大和最小数字

c - Linux 上的侧线程上的 malloc/calloc 崩溃

c - AVR 上的 FatF,是否有最大化写入速度的策略?

c++ - 如何在 PC/Visual C++ 上查明指针是否在堆栈上

c++ - 连接预处理器定义和字符串以创建#include 路径

c++ - 为什么迭代器调试在调试版本中会减慢 std::unordered_map 200x?