Microsoft Visual C++ 编译器版本控制
Microsoft Visual C++ 编译器版本由四个字段组成:
M - 主版本(两位数)
N - 次要版本(两位数)
B - 内部版本(五位数)
R - 修订版本
Microsoft 特定的编译器宏按以下方式对这些字段进行编码:
_MSC_VER
= MMNN
_MSC_FULL_VER
= MMNNBBBBB
_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。
注意
Visual Studio 2019 16.8 和 16.9 共享相同的主版本和次要版本,因此具有相同的 _MSC_VER
值。 Visual Studio 2019 16.10 和 16.11 也是一样。 若要区分它们,请使用从 Visual Studio 2017 开始的服务版本中所述的 _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。注意
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。
版本宏
回想一下,版本号由四个字段组成:
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 Studio 版本的 Visual C++ 编译器 _MSC_VER
:
Visual Studio 版本 | _MSC_VER |
---|---|
Visual Studio 6.0 | 1200 |
Visual Studio .NET 2002 (7.0) | 1300 |
Visual Studio .NET 2003 (7.1) | 1310 |
Visual Studio 2005 (8.0) | 1400 |
Visual Studio 2008 (9.0) | 1500 |
Visual Studio 2010 (10.0) | 1600 |
Visual Studio 2012 (11.0) | 1700 |
Visual Studio 2013 (12.0) | 1800 |
Visual Studio 2015 (14.0) | 1900 |
Visual Studio 2017 RTW (15.0) | 1910 |
Visual Studio 2017 版本 15.3 | 1911 |
Visual Studio 2017 版本 15.5 | 1912 |
Visual Studio 2017 版本 15.6 | 1913 |
Visual Studio 2017 15.7 版 | 1914 |
Visual Studio 2017 版本 15.8 | 1915 |
Visual Studio 2017 版本 15.9 | 1916 |
Visual Studio 2019 RTW 16.0 | 1920 |
Visual Studio 2019 版本 16.1 | 1921 |
Visual Studio 2019 版本 16.2 | 1922 |
Visual Studio 2019 版本 16.3 | 1923 |
Visual Studio 2019 版本 16.4 | 1924 |
Visual Studio 2019 版本 16.5 | 1925 |
Visual Studio 2019 版本 16.6 | 1926 |
Visual Studio 2019 版本 16.7 | 1927 |
Visual Studio 2019 版本 16.8、16.9 a | 1928 |
Visual Studio 2019 版本 16.10、16.11 b | 1929 |
Visual Studio 2022 RTW 17.0 | 1930 |
Visual Studio 2022 版本 17.1 | 1931 |
Visual Studio 2022 版本 17.2 | 1932 |
Visual Studio 2022 版本 17.3 | 1933 |
Visual Studio 2022 版本 17.4 | 1934 |
Visual Studio 2022 版本 17.5 | 1935 |
Visual Studio 2022 版本 17.6 | 1936 |
Visual Studio 2022 版本 17.7 | 1937 |
Visual Studio 2022 版本 17.8 | 1938 |
Visual Studio 2022 版本 17.9 | 1939 |
Visual Studio 2022 版本 17.10 | 1940 |
a Visual Studio 2019 16.8 和 16.9 共享相同的主版本和次要版本(因此具有相同的 _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 和 16.11 共享相同的主版本和次要版本(因此具有相同的 _MSC_VER
值)。 若要区分它们,请使用 _MSC_FULL_VER
。 Visual Studio 2019 16.10 的 _MSC_FULL_VER
的最小值为 192929917。 Visual Studio 2019 16.11 的 _MSC_FULL_VER
的最小值为 192930129。