Microsoft Visual C++


















































Visual C++
開發者
微软公司
穩定版本
穩定版本
Visual C++ 2017
(2017年3月7日


開發狀態
活跃
操作系统
Microsoft Windows
系統平台
x86、x86-64、Itanium
语言
英语、法语、德语、西班牙语、俄语、意大利语、韩语、日语、汉语(另有捷克语、葡萄牙语(巴西)、波兰语、土耳其语仅提供语言包)[1]
类型
集成开发环境
许可协议
微软的最终用户许可协议
網站
Visual C++ Developer Center

Microsoft Visual C++(简称Visual C++MSVCVC++VC)是微軟公司的C++開發工具,具有集成开发环境,可提供編輯C語言,C++以及C++/CLI等编程語言。VC++整合了便利的除錯工具,特別是整合了微軟Windows视窗操作系统应用程序接口(Windows API)、三维動畫DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C++ 2017。




目录






  • 1 風格


  • 2 发行版本


  • 3 歷史


    • 3.1 16-bit版本


    • 3.2 32-bit版本


    • 3.3 32/64 - bit版本


    • 3.4 MSC版本列表




  • 4 语言标准支持


    • 4.1 C99




  • 5 工具链生态环境


  • 6 参考文献


  • 7 外部連結


  • 8 參見





風格


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年初微软用它开发了Windows与Xenix。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++前端.[2]


  • C/C++ 7.01992年发布. 内建支持C++与MFC 1.0.[3]


  • Visual C++ 1.0, 包含了MFC 2.0, 发布于1993年2月22日。是Cfront 2.1 兼容[4]。IDE称“Visual Workbench”。有两个版本:[5]

    • Standard – 替换“QuickC for Windows”。售价199美元。

    • Professional – 替换 C/C++ 7.0. 可建构 DOS与Windows应用程序。包含了优化编译器、源profiler, Windows 3.1 SDK。[4]以及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]包含了四个版本:

    • Learning版[14]

    • Professional,[15]

    • Enterprise,[16]

    • RISC.[17]




  • 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 Basic和Visual 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++11与C99特性,并引入了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]



MSC版本列表



MSC编译器:[25]


MSVC++ 15.0 _MSC_VER == 1910 (Visual Studio 2017)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 7.0 _MSC_VER == 1300
MSVC++ 6.0 _MSC_VER == 1200
MSVC++ 5.0 _MSC_VER == 1100
MSVC++ 4.2 _MSC_VER == 1020
MSVC++ 4.0 _MSC_VER == 1000
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以前,完全不支持C99与C11的新特性,仅支持1989年版的ANSI C。[26]Visual C++ 2012开始在C模式下支持C99的部分特性,如designated initializers、compound literals、_Bool类型。Visual C++ 2013很大改进了对C99特性的支持。[27] Visual C++ 2015基本上完整支持了C99标准库,但需要编译器尚未支持的C99语言特性的那部分标准库除外。[28]





工具链生态环境


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


























































情形 编译选项 预处理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

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。



参考文献





  1. ^ Microsoft Visual Studio 2012下载页面. 


  2. ^ Ladd, Scott Robert. Optimizing With Microsoft C 6.0. August 1, 1990. 


  3. ^ Retrieved from http://support.microsoft.com/kb/196831.


  4. ^ 4.04.1 Visual C++ is a strong development tool. InfoWorld. June 21, 1993: 94. 


  5. ^ 引用错误:没有为名为Visual C++ adds Windows support的参考文献提供内容


  6. ^ Rival DOS Extenders debut at show. InfoWorld. March 1, 1993: 18. 


  7. ^ Visual C++ 1.5 integrates OLE, ODBC. InfoWorld. November 8, 1993: 5. 


  8. ^ Microsoft set to prerelease 32-bit Visual C++. InfoWorld. July 19, 1993: 12. 


  9. ^ C++ IDEs evolve. InfoWorld. April 4, 1994: 79. 


  10. ^ 10.010.1 Obsolete Products. (原始内容存档于2005-08-14). 


  11. ^ Toth, Viktor. 1. Visual C++ 4.0 unleashed. Indianapolis: SAMS Publishing. 1996 [26 July 2013]. ISBN 9780672308741. 


  12. ^ History of Visual Studio (Part 3). 


  13. ^ Major Changes from Visual C++ 4.2 to 5.0. 


  14. ^ Microsoft Visual C++ 5.0 Learning Edition. (原始内容存档于April 27, 1999). 


  15. ^ Microsoft Visual C++ 5.0 Professional Edition. (原始内容存档于April 27, 1999). 


  16. ^ Microsoft Visual C++ 5.0 Enterprise Edition. (原始内容存档于April 17, 1999). 


  17. ^ Microsoft Visual C++ 5.0 RISC Edition. (原始内容存档于April 29, 1999). 


  18. ^ Major Changes from Visual C++ 5.0 to 6.0. 


  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]. 


  21. ^ What's New for Visual C++ in Visual Studio 2012. Microsoft Developer Network. Microsoft. [September 20, 2015]. 


  22. ^ What's New for Visual C++ in Visual Studio 2013. Microsoft Developer Network. Miicrosoft. [September 20, 2015]. 


  23. ^ Eric Battalio. Visual Studio 2015 RTM Now Available. Visual C++ Team Blog. Microsoft. July 20, 2015. 


  24. ^ Stephan T. Lavavej. C++11/14/17 Features In VS 2015 RTM. Visual C++ Team Blog. Microsoft. June 19, 2015. 


  25. ^ Pre-defined Compiler Macros / Wiki / Compilers. sourceforge.net. [2016-02-11]. 


  26. ^ C99 support. Microsoft Connect. 


  27. ^ Pat Brenner. C99 library support in Visual Studio 2013. Visual C++ Team Blog. Microsoft. July 19, 2013. 


  28. ^ What's New for Visual C++ in Visual Studio 2015. Microsoft Developer Network. Microsoft. 


  29. ^ Visual C++ Team Blog: "Introducing the Universal CRT"




外部連結




  • (繁体中文)Visual Studio Express 2005首頁


  • (繁体中文)Visual Studio Express Visual C++ 2005下載頁面


  • (简体中文)Visual Studio Express首页


  • (简体中文)Visual Studio Express下载页面


  • (英文)微软的Visual C++开发者中心


  • (英文)微软的Visual C++开发社区


  • (英文)Building Win32 Applications Using Visual C++ 2005 Express


  • (英文)Visual C++ STL Templates Tutorial


  • (英文)Visual Studio Express 2010首頁


  • (英文)Visual Studio Express 2010下載頁面



參見


  • Microsoft Visual C#









Popular posts from this blog

Lambaréné

Chris Pine

Kashihara Line