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。

另请参阅

_MSC_VER
Visual C++ 编译器版本博客文章