_MSC_VER - MicroSoft微软MS VC++编译器版本号概念 对应MS VS一览
_MSC_VER 是微软公司推出的 C/C++ 编译器在 ANSI/ISO C99 标准之外扩展的宏定义,用来定义当前微软公司自己的编译器的主版本。
注意:_MSC_VER 并不是 Visual Studio 版本号,也不是 Visual C++ 版本号。
_MSC_VER 可用字符 MSC v.1912 64 bit (AMD64) 表示;其中 19 为 MS VC++ 编译器 _MSC_VER 主版本号,12 为次版本号。
譬如:假设当前使用的 Visual C++ 编译器版本号是15.00.20706.01 (MS VC++ 2008),那么 _MSC_VER 主版本号就为 "15",次版本号为 "00",因此,当前编译器预定义的 _MSC_VER 宏值为 1500。
Microsoft Visual Studio --> Help --> About 看到的 Version 值,是 Visual Studio 版本号,不是 VC++ 编译器版本号。
VC++ 编译器在 Visual Studio 里指的是 "cl.exe",开始 --> 所有程序 --> Microsoft Visual Studio 20** --> Visual Studio Tools --> Visual Studio 20** Command Prompt --> 进入 VC++ 20** 命令行 --> 运行 cl /? 即可看到
Microsoft Visual Studio 2005 的 _MSC_VER 信息如下所示: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved. 其中 "14.00.50727.762" 就是版本号,对应的 _MSC_VER 的值就是 1400
14.00.50727.762 的 4 部分依次为:主版本号、次版本号、生成版本号和修订号,还有两个相关宏 _MSC_FULL_VER:值为 140050727,_MSC_BUILD:值为 762。
智能编辑重构 批处理式 数字 Python IDE 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序) http://dt.digitser.cn/zh-CN/ide/idepy/index.html 编译程序
在程序源代码中加入 _MSC_VER 宏,可根据编译器版本让编译器选择性地编译一段程序。
譬如:一个版本编译器产生的 lib 文件可能不能被另一个版本的编译器调用,那么在开发应用程序时,在该程序的 lib 调用库中放入多个版本编译器产生的 lib 文件。在程序源代码中加入 _MSC_VER 宏,编译器就能在调用时根据其版本自动选择可以链接的 lib 库版本,如下所示。
#if _MSC_VER >= 1400 // for vc8, or vc9
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc8-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc8-r.lib" )
#endif
#elif _MSC_VER >= 1310 // for vc71
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc71-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc71-r.lib" )
#endif
#elif _MSC_VER >=1200 // for vc6
#ifdef _DEBUG
#pragma comment( lib, "SomeLib-vc6-d.lib" )
#elif
#pragma comment( lib, "SomeLib-vc6-r.lib" )
#endif
截止 2021.05.03,下表已停止维护,最新 最全内容见以下文档链接:
微软 Visual Studio 版本历史 http://wiki.digitser.cn/zh-CN/msvs/history.html
Microsoft Visual Studio 版本历史 时间 | 名称 | 内部版本 | C 类语言 | Basic 类语言 | Java 类语言 | 其他语言 | .NET Framework 版本 | _MSC_VER | 备注 | 1995.04 | Visual Studio | 4.0 | Visual C++ 4.0 | Visual Basic 3.0 | | Visual FoxPro 4.0 | | | 初版 | 1997.02 | Visual Studio 97 | 5.0 | Visual C++ 5.0 | Visual Basic 5.0 | Visual J++ 1.1 | Visual FoxPro 5.0 |
| 1100 | | 1998.06 | Visual Studio 6.0 | 6.0 | Visual C++ 6.0 | Visual Basic 6.0 | Visual J++ 6.0 | Visual FoxPro 6.0 |
| 1200 | | 2002.02 | Visual Studio .NET 2002 | 7.0 | Visual C++ 2002 Visual C# 2002 | Visual Basic 2002 | Visual J# 1.0 | - | 1.0 | 1300 | 去除 FoxPro 与 J++,以 J# 取代 J++ | 2003.04 | Visual Studio .NET 2003 | 7.1 | Visual C++ 2003 Visual C# 2003 | Visual Basic 2003 | Visual J# 1.1 | - | 1.1 | 1310 |
| 2005.11 | Visual Studio 2005 | 8.0 | Visual C++ 2005 Visual C# 2005 | Visual Basic 2005 | Visual J# 2.0 | - | 2.0 | 1400 | 微软将 .NET 由产品名称中移除 | 2007.11 | Visual Studio 2008 | 9.0 | Visual C++ 2008 Visual C# 2008 | Visual Basic 2008 | - | - | 2.0、3.0、3.5 | 1500 | 去除 J# | 2010.04 | Visual Studio 2010 | 10.0 | Visual C++ 2010 Visual C# 2010 | Visual Basic 2010 | - | Visual F# | 2.0、3.0、3.5 4.0 | 1600 | 加入 F# | 2012.08 | Visual Studio 2012 | 11.0 | Visual C++ 2012 Visual C# 2012 | Visual Basic 2012 |
| Visual F# 2012 | 2.0、3.0、3.5 4.0、4.5 | 1700 |
| 2013.10 | Visual Studio 2013 | 12.0 | Visual C++ 2013 Visual C# 2013 | Visual Basic 2013 |
| Visual F# 2013 | 2.0、3.0、3.5 4.0、4.5、4.5.1、4.5.2 | 1800 |
| 2014.11 | Visual Studio 2015 | 14.0 | Visual C++2015 Visual C# 2015 | Visual Basic 2015 |
| Visual F# 2015 | 2.0、3.0、3.5 4.0、4.5、4.5.1、4.5.3、4.5.5、4.6 | 1900 | 首次发布 Visual Studio Community 版 供开发者、开源社区、学术研究、教育、小型团队长期免费使用 | 2015.07 | Visual Studio 2015 RTM | 14.0 | Visual C++2015 Visual C# 2015 | Visual Basic 2015 |
| Visual F# 2015 | 2.0、3.0、3.5 4.0、4.5、4.5.1、4.5.3、4.5.5、4.6 5.0、6.0 | 1900 | 基于 .NET Framework 4.5.2 RTM: Release to Manufacturing | 2017.03 | Visual Studio 2017 | 15.0 | Visual C++ 2017 Visual C# 2017 | Visual Basic 2017 |
| Visual F# 2017 | 2.0、3.0、3.5 4.0、4.5、4.5.1、4.5.3、4.5.5、4.6 5.0、6.0 |
| 基于 .NET Framework 4.6 |
扫一扫关注 德云社区 微信公众号 版权声明: 本文为独家原创稿件,版权归 德云社区,未经许可不得转载。 |