MSVC++ 4.x _MSC_VER == 1000
MSVC++ 5.0 _MSC_VER == 1100
MSVC++ 6.0 _MSC_VER == 1200
MSVC++ 7.0 _MSC_VER == 1300
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
MSVC++ 14.1 _MSC_VER == 1911 (Visual Studio 2017)
VC/VS有3种版本号,:(xx表示具体的数字)
MSVC++ xx(VC版本 eg. VC6.0)_MSC_VER xxVisualStudio xx(VS版本 eg. VS2012)
对照关系整理如下(更新至2025.5.24):
VC 版本 | _MSC_VER宏的值 | VS 版本 | MSVC toolset version |
|---|---|---|---|
| VC6.0 | 1200 | VS 6.0 | |
| VC7.0 | 1300 | VS2002 | |
| VC7.1 | 1310 | VS2003 | |
| VC8.0 | 1400 | VS2005 | 80 |
| VC9.0 | 1500 | VS2008 | 90 |
| VC10.0 | 1600 | VS2010 | 100 |
| VC11.0 | 1700 | VS2012 | 110 |
| VC12.0 | 1800 | VS2013 | 120 |
| VC14.0 | 1900 | VS2015 | 140 |
| VC15.0 | [1910,1916] | VS2017 | 141 |
| VC16.0 | [1920,1929] | VS2019 | 142 |
| VC17.0 | [1930,) | VS2022 | 143 |
对于 VS2022,CMake 文档中 MSVC_VERSION 的信息更新有延迟, 它目前(2024-05-27 15:22:56)仍认为 1939 是最大可能的取值,而 VS2022 17.10.0 版本中 _MSC_VER 这一 c/c++ 宏取值为 1940, cmake 变量 MSVC_VERSION 也变为了 1940.
Table 1. Mapping of VS 2022 update releases to current MSVC versions ( MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10
)
| Visual Studio Releases | Updates with new MSVC Tools | MSVC version | _MSC_VER | End of Support |
|---|---|---|---|---|
| Visual Studio 2022 | GA (Version 17.0) LTSC | 19.30.30705 | 1930 | Jul 11, 2023 |
| Version 17.1 | 19.31.31103 | 1931 | May 10, 2022 | |
| Version 17.2 LTSC | 19.32.31326 | 1932 | Jan 9, 2024 | |
| Version 17.3 | 19.33.31629 | 1933 | Nov 8, 2022 | |
| Version 17.4.14 LTSC | 19.34.31948 | 1934 | Jul 11, 2024 | |
| Version 17.5.3 | 19.35.32216 | 1935 | May 16, 2023 | |
| Version 17.6.11 LTSC | 19.36.32544 | 1936 | Jan 9, 2025 | |
| Version 17.7.7 | 19.37.32826 | 1937 | Nov 14, 2023 | |
| Version 17.8.6 LTSC | 19.38.33135 | 1938 | Jul 8, 2025 | |
| Version 17.9 | 19.39.xxxxx | 1939 | TBD | |
| Version 17.10 | 19.40.xxxxx | 1940 | TBD | |
| … | … | … | … |
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.41
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>cl
用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.29.30156 版
版权所有(C) Microsoft Corporation。保留所有权利。
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>
#if (_MSC_VER == 1500)
// ... Do VC9/Visual Studio 2008 specific stuff
#elif (_MSC_VER == 1600)
// ... Do VC10/Visual Studio 2010 specific stuff
#elif (_MSC_VER == 1700)
// ... Do VC11/Visual Studio 2012 specific stuff
#endif
#if (_MSC_VER >= 1500 && _MSC_VER <= 1600)
// ... Do VC9/Visual Studio 2008 specific stuff
#endif
//******************************************************************************
// Automated platform detection
//******************************************************************************
// _WIN32 is used by
// Visual C++
#ifdef _WIN32
#define __NT__
#endif
// Define __MAC__ platform indicator
#ifdef macintosh
#define __MAC__
#endif
// Define __OSX__ platform indicator
#ifdef __APPLE__
#define __OSX__
#endif
// Define __WIN16__ platform indicator
#ifdef _Windows_
#ifndef __NT__
#define __WIN16__
#endif
#endif
// Define Windows CE platform indicator
#ifdef WIN32_PLATFORM_HPCPRO
#define __WINCE__
#endif
#if (_WIN32_WCE == 300) // for Pocket PC
#define __POCKETPC__
#define __WINCE__
//#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern)
//#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon)
//#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo)
#endif

3125

被折叠的 条评论
为什么被折叠?



