Microsoft Visual C++ - Wikiwand
For faster navigation, this Iframe is preloading the Wikiwand page for Microsoft Visual C++.

Microsoft Visual C++

维基百科,自由的百科全书

Visual C++
开发者微软公司
初始版本1993年2月,​28年前​(1993-02[1]
稳定版本
14.28.29333
(2020年11月10日,​5个月前​(2020-11-10
操作系统Microsoft Windows
系统平台x86x86-64Itanium
语言英语法语德语西班牙语俄语意大利语韩语日语汉语(另有捷克语葡萄牙语(巴西)、波兰语土耳其语仅提供语言包)[2]
类型集成开发环境
许可协议微软最终用户许可协议
网站docs.microsoft.com/zh-tw/cpp/

Microsoft Visual C++(简称Visual C++MSVCVC++VC)是微软公司C++开发工具,具有集成开发环境,可提供编辑C语言C++以及C++/CLI编程语言。VC++集成了便利的调试工具,特别是集成了微软Windows视窗操作系统应用程序接口(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2019。

风格

Visual C++以拥有语法高亮、IntelliSense(智慧提示)以及高级调试功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加链接(link)著称。这些特征明显缩短程序编辑、编译及链接的时间花费,在大型软件项目上尤其显著。

发行版本

Visual C++被集成在Visual Studio之中,但仍可单独安装使用。

通常细分为多个发行版本。以Visual C++ 2013为例:

  • Visual C++ 2013 Community社区版(功能同专业版)(非商业免费)
  • Visual C++ 2013 Express速成版
  • Visual C++ 2013 Professional专业版
  • Visual C++ 2013 Premium高级版
  • Visual C++ 2013 Ultimate旗舰版

其中Microsoft Visual C++ 2013 Express可从MSDN的网站免费下载使用,并且不限制商业使用(但不包含MFC)。

历史

Visual C++的前身是Microsoft C/C++。还有相关产品:Microsoft QuickC 2.5 与Microsoft QuickC for Windows 1.0. Visual C++ 编译器仍然叫做Microsoft C/C++。例如Visual C++ 2015 Update 2的版本号是19.00.23918.

16-bit版本

  • Microsoft C 1.0~6.0,C/C++ 7.0
  • Visual C++ 1.0~1.52c
  • Microsoft C 1.0, 基于Lattice C, Microsoft的第一款C产品,发布于1983年10月。遵循K&R C语言标准。售价500美元。
  • C 2.0 增加了large model支持.
  • C 3.0是第一款Microsoft自己开发的C产品. 目标是兼容K&R与ANSI标准。1984年初微软用它开发了WindowsXenix。1985年对外发布.
  • C 4.0增加了优化器与源级调试器CodeView.
  • C 5.0增加了循环优化与Huge Model (数组大于64k)支持。Microsoft Fortran与80386上第一款32位编译器也是此计划的一部分。
  • C 5.11988年发布,允许为OS/2 1.x编译.
  • C 6.01989发布. 增加了全局流分析、源浏览器、新调试器、可选的C++前端.[3]
  • C/C++ 7.01992年发布. 内建支持C++与MFC 1.0.[4]
  • Visual C++ 1.0, 包含了MFC 2.0, 发布于1993年2月22日。是Cfront 2.1 兼容[5]。IDE称“Visual Workbench”。有两个版本:[1]
    • Standard – 替换“QuickC for Windows”。售价199美元。
    • Professional – 替换 C/C++ 7.0. 可建构 DOS与Windows应用程序。包含了优化编译器、源profiler, Windows 3.1 SDK。[5]以及Phar Lap 286 DOS Extender Lite[6]售价499美元。
  • Visual C++ 1.5发布于1993年12月, 包含了MFC 2.5, 增加了OLE 2.0与ODBC 支持.[7] 是首款仅用CD-ROM发布的Visual C++.这个版本-{只}支持16位开发。
    • Visual C++ 1.51 与 1.52作为subscription service可利用.
    • Visual C++ 1.52b 类似于1.52, 但不包括Control Development Kit.
    • Visual C++ 1.52c 是1.5的加补丁版. 是最后一版,也是有争议的最为流行的Microsoft Windows 3.x开发平台. 可通过Microsoft Developer Network使用它.

32-bit版本

  • Visual C++ 1.0 (最初称: Visual C++ 32-bit Edition)是该系列的第一款32位编译器.[8] 1993年7月发布时,已经有了16位的VC++ 1.5,但这个版本不支持OLE2与ODBC. 套装叫做Visual C++ 16/32-bit Suite, 其中包含了Visual C++ 1.5.[9]
  • Visual C++ 2.0,集成了MFC 3.0,第一个只发行32位的版本。这个版本提前发行了,几乎成了一个“丢失的版本”。这是因为那个时候Windows 95(开发代码为"Chicago")还没有发行,而Windows NT又只占有很小的市场份额。该版本用户可以通过微软公司的订阅服务(Microsoft Subscription Service)升级至2.1和2.2版本。微软公司在这个版本中还包含了升级后的Visual C++ 1.5:2.0版本中包含了Visual C++ 1.51;2.1版本包含了Visual C++ 1.52。Visual C++ 2.x附带了16位和32位版本的CDK,同时支持Win32s的开发。Visual C++ 2.2及其后续版本不再升级Visual C++ 1.5(尽管它一直被集成至Visual C++ 4.x)。尽管出生的比Windows 95早,这个版本的发行日期还是非常接近Windows 95,可是当Windows 95发行时,Visual C++ 4.0也已经发行了。因此很多程序开发者直接从1.x过渡到4.0,把2.x跳过去了。
    • Visual C++ 2.1与2.2可通过订阅服务获得。
  • Visual C++ 4.0,发布于1995-12-11[10],引入了Developer Studio IDE,[11]集成了MFC 4.0,这个版本是专门为Windows 95以及Windows NT设计的。用户可以通过微软公司的订阅服务(Microsoft Subscription Service)升级至4.1版本(包含Microsoft Game SDK)和4.2版本(此版本不再支持Win32s开发)。 为支持老的(Windows 3.x/DOS)项目,还包含了Visual C++ 1.52安装光盘。 VC++ 3.0版本号被跳过,以与MFC 4.0的版本号相同.[12]
  • Visual C++ 5.0,集成了MFC 4.21,发布于1997-04-28,[10]。是4.2版以来比较大的一次升级。[13]包含了四个版本:
  • Visual C++ 6.0,集成了MFC 6.0,于1998年8月发行。[18]发行至今一直被广泛地用于大大小小的项目开发。但是,这个版本在Windows XP下运行会出现问题,尤其是在调试模式的情况下(例如:静态变量的值并不会显示)。这个调试问题可以通过打一个叫“Visual C++ 6.0 Processor Pack”的补丁来解决。奇怪的是,这个网页强调用户也必须运行Windows 98、Windows NT 4.0、或Windows 2000。版本号12.00.8804
  • Visual C++ .NET 2002(也即Visual C++ 7.0),于2002年发行,集成了MFC 7.0,支持链接时代码生成和调试运行时检查。这个版本还集成了Managed Extension for C++,以及一个全新的用户界面(与Visual BasicVisual C#共享)。这也是为什么Visual C++ 6.0仍然被广泛使用的一个主要原因。版本号13.00.9466
  • Visual C++ .NET 2003(也即Visual C++ 7.1),集成了MFC 7.1,于2003年发行,是对Visual C++ .NET 2002的一次重大升级。版本号13.10.3077
  • eMbedded Visual C++[19]用于Windows CE操作系统。Visual C++作为一个独立的开发环境被Microsoft Visual Studio 2005所替代。

32/64 - bit版本

  • Visual C++ 2005(也即Visual C++ 8.0),集成了MFC 8.0,于2005年11月发布。这个版本引进了全新版本的C++/CLI语言以替换Managed C++,以及OpenMP的支持。Visual Studio 2005标准版与专业版有支持x64编译。
  • Visual C++ 2008(也即Visual C++ 9.0),于2007年11月发布。这个版本支持.NET 3.5。Visual Studio 2008 Team Suite更同时支持x64与IA-64编译
  • Visual C++ 2010(也即Visual C++ 10.0),于2010年4月12日发布。Visual C++开发团队考虑使用SQL Server Compact格式的数据库来存储原始码的相关信息[20].本版也加入了现代化的C++并行运算库-Parallel Patterns Library,部分支持C++0x。本版建构于.NET 4.0之上,但仍支持机器代码的编译。
  • Visual C++ 2012(也即Visual C++ 11.0),于2012年8月15日发布。支持Windows Runtime开发。[21]从该版本起,编译出的32位程序不能在Windows NT4.0 / 2000 / XP上运行,这是因为在程序内部使用了自Vista起出现在kernel32.dll中的GetTickCount64函数。解决办法是在编译project的platform set选择为“Visual Studio 2012 - Windows XP (v110_xp) ”。
  • Visual C++ 2013(也即Visual C++ 12.0),于2013年10月17日发布。支持C++11C99特性,并引入了REST SDK。[22]
    • RTM version number: 18.0.21005.1
    • Update 2 version number: 18.00.30501
  • Visual C++ 2015(也即Visual C++ 14.0)于2015年7月20日发布。[23] 改进了对C++11/14/17支持。[24]
  • Visual C++ 2017(也即Visual C++ 14.1)于2017年3月7日发布。[25]
  • Visual C++ 2019(也即Visual C++ 14.2)于2019年4月2日发布。[26]

MSC版本列表

微软的C/C++编译器有一个内置的宏_MSC_VER来表示编译器的当前版本。[27]

MSVC++ 14.26 _MSC_VER == 1926 (Visual Studio 2019 Version 16.6)
MSVC++ 14.25 _MSC_VER == 1925 (Visual Studio 2019 Version 16.5)
MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 Version 16.4)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 Version 16.3)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 Version 16.2)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 Version 16.1)
MSVC++ 14.2  _MSC_VER == 1920 (Visual Studio 2019 Version 16.0)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.10 _MSC_VER == 1910 (Visual Studio 2017 version 15.0) 从此版本开始,MSVC++版本号与Visual Studio版本号不再同步,并且每个子版本都会递增
MSVC++ 14.0  _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 12.0  _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 11.0  _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 10.0  _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 9.0   _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 8.0   _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 7.1   _MSC_VER == 1310 (Visual Studio 2003 version 7.1)
MSVC++ 7.0   _MSC_VER == 1300 (Visual Studio 2002 version 7.0)
MSVC++ 6.0   _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 5.0   _MSC_VER == 1100 (Visual Studio 97 version 5.0)
MSVC++ 4.2   _MSC_VER == 1020 (Developer Studio 4.2)
MSVC++ 4.0   _MSC_VER == 1000 (Developer Studio 4.0)
MSVC++ 2.0   _MSC_VER == 900
MSVC++ 1.0   _MSC_VER == 800
MSC    7.0   _MSC_VER == 700 
MSC    6.0   _MSC_VER == 600 
MSC    5.0   _MSC_VER == 500 
MSC    4.0   _MSC_VER == 400 
MSC    3.0   _MSC_VER == 300 第一个微软自行开发,兼容K&R及随后的ANSI C语言标准1985年发布。
MSC    2.0   _MSC_VER == 200 增加了Large模式(用于16位编程)。
MSC    1.0   _MSC_VER == 100 基于((tsl|en|Lattice C)),发布于1983年。

语言标准支持

C99

在Visual C++ 2012以前,完全不支持C99C11的新特性,仅支持1989年版的ANSI C[28]Visual C++ 2012开始在C模式下支持C99的部分特性,如designated initializers、compound literals、_Bool类型。Visual C++ 2013很大改进了对C99特性的支持。[29] Visual C++ 2015基本上完整支持了C99标准库,但需要编译器尚未支持的C99语言特性的那部分标准库除外。[30]

C++

至VC++2017 Version 15.7已经完全实现了C++17

详细情况见[31]

工具链生态环境

  • Universal CRT (UCRT)包含了C99运行时库的函数与全局变量。UCRT现在是Windows component,随Windows 10安装。UCRT的静态库、DLL的导入库、头文件是Windows 10 SDK的一部分。
  • vcruntime库包含Visual C++ CRT实现相关的代码,如异常处理、调试支持、运行时检查、类型信息、实现细节与特定扩展库函数。 vcruntime库相关于特定编译器。
  • CRT初始化库处理进程启动(CRT startup)、内部的逐线程的初始化、终止。CRT初始化库相关于特定编译器。CRT初始化库总是静态链接,即使使用了动态链接的UCRT.
  • 对于本地代码与受管代码混合的情形,使用/clr编译选项,这会动态链接 UCRT与vcruntime,静态链接msvcmrt.lib或msvcmrtd.lib;svcmrt.lib或msvcmrtd.lib提供了受管代码与本地CRT之间的proxy。对于纯受管代码情形,使用/clr:pure编译选项,这会静态链接msvcurt.lib或msvcurtd.lib。

编译时,根据项目是调试版还是发布版,动态还是静态链接运行时库,编译器可自动使用默认库。如果使用编译选项/nodefaultlib,需要显式指定使用的库。对于VC++2015,所有下述库均为多线程:[32]

情形 编译选项 预处理directives CRT初始化库
(均为静态链接)
vcruntime库 vcruntime DLL Universal CRT UCRT DLL Standard C++库
Release DLLs /MD _MT, _DLL msvcrt.lib vcruntime.lib vcruntime<version>.dll ucrt.lib ucrtbase.dll MSVCPRT.LIB
是MSVCP<version>.dll的输入库
Debug DLLs /MDd _DEBUG, _MT, _DLL msvcrtd.lib vcruntimed.lib vcruntime<version>d.dll ucrtd.lib ucrtbased.dll MSVCPRTD.LIB
是MSVCP<version>D.dll的输入库
Release Static /MT _MT libcmt.lib libvcruntime.lib None libucrt.lib None LIBCPMT.LIB
Debug Static /MTd _DEBUG, _MT libcmtd.lib libvcruntimed.lib None libucrtd.lib None LIBCPMTD.LIB
Mixed Release Static /clr _MT msvcmrt.lib
Mixed Debug Static /clr _MT msvcmrtd.lib
Pure Release Static(过时) /clr:pure _MT msvcurt.lib
Pure Debug Static(过时) /clr:pure _MT msvcurtd.lib

Visual C++运行时库

Visual C++编译出的应用程序,其运行环境通常需要安装Visual C++运行时库。官方下载网址见[33]

参考文献

  1. ^ 1.0 1.1 Visual C++ adds Windows support. InfoWorld. 1993-02-22: 17. 
  2. ^ Microsoft Visual Studio 2012下载页面. [2017-04-13]. (原始内容存档于2013-11-12). 
  3. ^ Ladd, Scott Robert. Optimizing With Microsoft C 6.0. 1990-08-01 [2016-11-28]. (原始内容存档于2017-03-20). 
  4. ^ Retrieved from http://support.microsoft.com/kb/196831页面存档备份,存于互联网档案馆).
  5. ^ 5.0 5.1 Visual C++ is a strong development tool. InfoWorld. 1993-06-21: 94 [2017-04-13]. (原始内容存档于2020-08-05). 
  6. ^ Rival DOS Extenders debut at show. InfoWorld. 1993-03-01: 18. 
  7. ^ Visual C++ 1.5 integrates OLE, ODBC. InfoWorld. 1993-11-08: 5 [2017-04-13]. (原始内容存档于2020-08-05). 
  8. ^ Microsoft set to prerelease 32-bit Visual C++. InfoWorld. 1993-07-19: 12. 
  9. ^ C++ IDEs evolve. InfoWorld. 1994-04-04: 79. 
  10. ^ 10.0 10.1 Obsolete Products. [2017-04-13]. (原始内容存档于2005-08-14). 
  11. ^ Toth, Viktor. 1. Visual C++ 4.0 unleashed. Indianapolis: SAMS Publishing. 1996 [2013-07-26]. ISBN 9780672308741. (原始内容存档于2019-08-11). 
  12. ^ History of Visual Studio (Part 3). [2017-04-13]. (原始内容存档于2009-10-11). 
  13. ^ Major Changes from Visual C++ 4.2 to 5.0. [2017-04-13]. (原始内容存档于2015-08-28). 
  14. ^ Microsoft Visual C++ 5.0 Learning Edition. [2017-04-13]. (原始内容存档于1999-04-27). 
  15. ^ Microsoft Visual C++ 5.0 Professional Edition. [2017-04-13]. (原始内容存档于1999-04-27). 
  16. ^ Microsoft Visual C++ 5.0 Enterprise Edition. [2017-04-13]. (原始内容存档于1999-04-17). 
  17. ^ Microsoft Visual C++ 5.0 RISC Edition. [2017-04-13]. (原始内容存档于1999-04-29). 
  18. ^ Major Changes from Visual C++ 5.0 to 6.0. [2017-04-13]. (原始内容存档于2008-09-14). 
  19. ^ Douglas Boling :Programming Microsoft Windows CE .NET, Third Edition Microsoft Press; 3rd edition (June 25, 2003) Paperback: 1264 pages ISBN 978-0735618848 - Companion CD with Microsoft eMbedded Visual C++ 4.0 Service Pack 2 Archive.is存档,存档日期2013-02-11
  20. ^ Visual C++ Team Blog. IntelliSense, part 2: The Future. [2008-03-12]. (原始内容存档于2010-03-11). 
  21. ^ What's New for Visual C++ in Visual Studio 2012. Microsoft Developer Network. Microsoft. [2015-09-20]. (原始内容存档于2015-09-23). 
  22. ^ What's New for Visual C++ in Visual Studio 2013. Microsoft Developer Network. Miicrosoft. [2015-09-20]. (原始内容存档于2015-05-23). 
  23. ^ Eric Battalio. Visual Studio 2015 RTM Now Available. Visual C++ Team Blog. Microsoft. 2015-07-20 [2017-04-13]. (原始内容存档于2015-07-22). 
  24. ^ Stephan T. Lavavej. C++11/14/17 Features In VS 2015 RTM. Visual C++ Team Blog. Microsoft. 2015-06-19 [2017-04-13]. (原始内容存档于2015-06-20). 
  25. ^ John. Visual Studio 2017: Productivity, Performance, and Partners. Visual Studio Blog. Microsoft. 2017-03-07 [2020-08-14]. (原始内容存档于2020-09-19). 
  26. ^ John. Visual Studio 2019: Code faster. Work smarter. Create the future.. Visual Studio Blog. Microsoft. 2019-04-02 [2020-08-14]. (原始内容存档于2021-01-29) (美国英语). 
  27. ^ Pre-defined Compiler Macros / Wiki / Compilers. sourceforge.net. [2016-02-11]. (原始内容存档于2020-11-11). 
  28. ^ C99 support. Microsoft Connect. [2017-04-13]. (原始内容存档于2016-03-04). 
  29. ^ Pat Brenner. C99 library support in Visual Studio 2013. Visual C++ Team Blog. Microsoft. 2013-07-19 [2017-04-13]. (原始内容存档于2014-08-05). 
  30. ^ What's New for Visual C++ in Visual Studio 2015. Microsoft Developer Network. Microsoft. [2017-04-13]. (原始内容存档于2018-11-05). 
  31. ^ MSDN: Visual C++ Language Conformance. [2018-11-14]. (原始内容存档于2019-01-09). 
  32. ^ Visual C++ Team Blog: "Introducing the Universal CRT". [2017-03-22]. (原始内容存档于2019-07-01). 
  33. ^ MSDN: The latest supported Visual C++ downloads. [2018-11-14]. (原始内容存档于2019-08-10). 

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
Microsoft Visual C++
Listen to this article