Microsoft Visual C++ 编译器版本由四个字段组成:
M - 主版本(两位数)
N - 次要版本(两位数)
B - 内部版本(五位数)
R - 修订版本
Microsoft 特定的编译器宏按以下方式对这些字段进行编码:
_MSC_VER = MMNN
_MSC_FULL_VER = MMNNBBB
_MSC_BUILD = R
例如,Visual Studio 2022 版本 17.9.0 的编译器版本为 19.39.33519:
主版本是 19
次要版本是 39
内部版本是 33519
修订版本为 0
宏按如下方式反映这些值:
_MSC_VER = 1939
_MSC_FULL_VER = 193933519
_MSC_BUILD(修订)是 0。
Note
Visual Studio 2019 16.8 和 16.9 共享相同的主版本和次要版本,因此具有相同的 _MSC_VER 值。 Visual Studio 2019 16.10 和 16.11 也是一样。 若要区分它们,请使用_MSC_FULL_VER中所述的 。
Visual C++ 编译器版本控制的简要历史
Visual Studio 6.0 到 Visual Studio 2015 (14.0)
对于主版本,_MSC_VER 增加 100。
_MSC_FULL_VER 增加 10,000,000。
对于次要版本,_MSC_VER 增加 10。
_MSC_FULL_VER 增加 1,000,000。
Note
Visual Studio .NET 2003 被视为次要版本。
Visual Studio 2017 及更高版本
对于主要版本,次要版本增加 10。
对于次要版本,次要版本增加 1,从 Visual Studio 2017 版本 15.3 开始。
从 Visual Studio 2017 开始的服务版本
服务版本由 _MSC_FULL_VER区分开来。 内部版本字段(MMNNBBBBB 版本号中的 BBBBB)通常增加 1。
例如,_MSC_FULL_VER 有用的两个例子是区分 Visual Studio 2019 16.8 与 16.9 以及 Visual Studio 2019 16.10 与 16.11。 这是因为这些版本共享相同的主版本和次要版本,因此具有相同的 _MSC_VER 值。
若要区分这些版本,请使用 _MSC_FULL_VER。
Visual Studio 2019 16.8 的 _MSC_FULL_VER 的最小值为 192829333。
Visual Studio 2019 16.9 的 _MSC_FULL_VER 的最小值为 192829910。
Version macros
回想一下,版本号由四个字段组成:
M - 主版本(两位数)
N - 次要版本(两位数)
B - 内部版本(五位数)
R - 修订版本
_MSC_VER 可区分主版本和次要版本。 它的形式为:MMNN。
_MSC_FULL_VER 表示编译器的主版本、次要版本和内部版本。 它的形式为:MMNNBBBBB。 使用它可以区分不同版本的编译器,包括服务版本。 有关 Visual Studio 2019 16.8、16.9、16.10 和 16.11 的详细信息,请参阅从 Visual Studio 2017 开始的服务版本。
_MSC_BUILD 表示编译器的内部版本。 它的形式为:R。使用它可区分服务版本。
当主版本在 Visual Studio 2013 和 Visual Studio 2015 之间更改时,_MSC_VER 反映了从 1800 到 1900 的更改。
次要版本更改的一个例子是从 Visual Studio 2022 17.1 更改为 Visual Studio 2022 17.2。 在这种情况下,_MSC_VER 从 1931 更改为 1932。
下表列出了对应于每个 Visual C++ 编译器(_MSC_VER)和 MSVC 工具集版本的 Visual Studio 版本:
Visual Studio 版本
_MSC_VER
MSVC 工具集版本
Visual Studio 6.0
1200
6.0
Visual Studio .NET 2002 (7.0)
1300
7.0
Visual Studio .NET 2003 (7.1)
1310
7.1
Visual Studio 2005 (8.0)
1400
8.0
Visual Studio 2008 (9.0)
1500
9.0
Visual Studio 2010 (10.0)
1600
10.0
Visual Studio 2012 (11.0)
1700
11.0
Visual Studio 2013 (12.0)
1800
12.0
Visual Studio 2015 (14.0)
1900
14.0
Visual Studio 2017 RTW (15.0)
1910
14.10
Visual Studio 2017 版本 15.3
1911
14.11
Visual Studio 2017 版本 15.5
1912
14.12
Visual Studio 2017 版本 15.6
1913
14.13
Visual Studio 2017 15.7 版
1914
14.14
Visual Studio 2017 版本 15.8
1915
14.15
Visual Studio 2017 版本 15.9
1916
14.16
Visual Studio 2019 RTW 16.0
1920
14.20
Visual Studio 2019 版本 16.1
1921
14.21
Visual Studio 2019 版本 16.2
1922
14.22
Visual Studio 2019 版本 16.3
1923
14.23
Visual Studio 2019 版本 16.4
1924
14.24
Visual Studio 2019 版本 16.5
1925
14.25
Visual Studio 2019 版本 16.6
1926
14.26
Visual Studio 2019 版本 16.7
1927
14.27
Visual Studio 2019 version 16.8, 16.9 a
1928
14.28
Visual Studio 2019 version 16.10, 16.11 b
1929
14.29
Visual Studio 2022 RTW 17.0
1930
14.30
Visual Studio 2022 版本 17.1
1931
14.31
Visual Studio 2022 版本 17.2
1932
14.32
Visual Studio 2022 版本 17.3
1933
14.33
Visual Studio 2022 版本 17.4
1934
14.34
Visual Studio 2022 版本 17.5
1935
14.35
Visual Studio 2022 版本 17.6
1936
14.36
Visual Studio 2022 版本 17.7
1937
14.37
Visual Studio 2022 版本 17.8
1938
14.38
Visual Studio 2022 版本 17.9
1939
14.39
Visual Studio 2022 版本 17.10
1940
14.40
Visual Studio 2022 版本 17.11
1941
14.41
Visual Studio 2022 版本 17.12
1942
14.42
Visual Studio 2022 版本 17.13
1943
14.43
Visual Studio 2022 版本 17.14
1944
14.44
a Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for _MSC_VER). 若要区分它们,请使用 _MSC_FULL_VER。 Visual Studio 2019 16.8 的 _MSC_FULL_VER 的最小值为 192829333。 Visual Studio 2019 16.9 的 _MSC_FULL_VER 的最小值为 192829910。
b Visual Studio 2019 16.10 and 16.11 share the same major and minor versions (and so have the same value for _MSC_VER). 若要区分它们,请使用 _MSC_FULL_VER。 Visual Studio 2019 16.10 的 _MSC_FULL_VER 的最小值为 192929917。 Visual Studio 2019 16.11 的 _MSC_FULL_VER 的最小值为 192930129。
See also
_MSC_VER
Visual C++ 编译器版本博客文章