Microsoft Visual C（簡稱 Visual C、MSVC、VC 或 VC）是微軟公司的 C 開發工具，具有整合開發環境，可提供編輯 C 語言，C 以及 CCLI 等程式語言。VC 整合了便利的除錯工具，特別是整合了微軟 Windows 作業系統應用程式介面（Windows API）、三維動畫 DirectX API，微軟NET 框架。目前最新的版本是 Microsoft Visual C 2022。 風格 Visual C 以擁有語法高亮、IntelliSense（智慧提示）以及高階除錯功能而著稱。比如，它允許使用者進行遠端除錯，單步執行等。還有允許使用者在除錯期間重新編譯被修改的程式碼，而不必重新啟動正在除錯的程式。其編譯及建立預編譯標頭檔案（stdafxh）、最小重建功能及累加連結（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）。 歷史 微軟的 CC 編譯器有一個內建的宏_MSC_VER 來表示編譯器的當前版本。 Visual C 的前身是 Microsoft CC。還有相關產品：Microsoft QuickC 25 與 Microsoft Quick C for Windows 10 Visual C 編譯器仍然叫做 Microsoft CC。例如 Visual C 2015 Update 2 的版本號是 190023918 VC MFC 和 ATL 的版本歷史 產品 Codename 釋出日期 C 版本 _MSC_VER MFC 版本 _MFC_VER ATL 版本 _ATL_VER 註釋 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 16bit 版本 MSC 10 1983 年 10 月 100 基於 Lattice C Microsoft 的第一款 C 產品。遵循 KR C 語言標準。售價 500 美元。 MSC 20 200 增加了 large model 支援 MSC 30 1985 年 300 第一款 Microsoft 自己開發的 C 產品。目標是相容 KR 與 ANSI 標準。1984 年初微軟用它開發了 Windows 與 Xenix。 MSC 40 400 增加了最佳化器與源級偵錯程式 CodeView MSC 50 500 增加了迴圈最佳化與 Huge Model 陣列大於 64k 支援。Microsoft Fortran 與 80386 上第一款 32 位編譯器也是此計劃的一部分。 Microsoft C 51 Optimizing Compiler 1988 年 允許 OS2 1x 編譯 MSC 60 1989 年 600 增加了全域性流分析、源瀏覽器、新偵錯程式、可選的 C 前端 MS CC 70 1992 年 700 10 0x0100 內建支援 C 與 MFC 10Retrieved from httpsupportmicrosoftcomkb196831 Visual C 10 Caviar 1993 年 2 月 22 日 10 800 20 0x0200 Cfront 21 相容。IDE 稱 Visual Workbench。有兩個版本 Standard 替換 QuickC for Windows。售價 199 美元。 Professional 替換 CC 70 可建構 DOS 與 Windows 應用程式。包含了最佳化編譯器、源 profiler Windows 31 SDK。以及 Phar Lap 286 DOS Extender Lite 售價 499 美元。 Visual C 11 Barracuda 1993 11 Visual C 15 Dolphin 1993 年 12 月 15 850 25 0x0250 增加了 OLE 20 與 ODBC 支援。是首款僅用 CDROM 釋出的 Visual C 這個版本 只 支援 16 位開發。 Visual C 151 15 作為 subscription service 可利用 Visual C 152 152 作為 subscription service 可利用 Visual C 152b 152b 類似於 152 但不包括 Control Development Kit Visual C 152c 152c 是 15 的加補丁版。是最後一版，也是有爭議的最為流行的 Microsoft Windows 3x 開發平臺。可透過 Microsoft Developer Network 使用它 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 32bit 版本 Visual C 10 最初稱 Visual C 32bit Edition 1993 年 7 月釋出時，已經有了 16 位的 VC 15，但這個版本不支援 OLE2 與 ODBC 套裝叫做 Visual C 1632bit Suite 其中包含了 Visual C 15 Visual C 20 20 900 30 0x0300 第一個只發行 32 位的版本。這個版本提前發行了，幾乎成了一個「丟失的版本」。這是因為那個時候 Windows 95（開發程式碼為 Chicago）還沒有發行，而 Windows NT 又只佔有很小的市場份額。該版本使用者可以透過微軟公司的訂閱服務（Microsoft Subscription Service）升級至 21 和 22 版本。微軟公司在這個版本中還包含了升級後的 Visual C 15：20 版本中包含了 Visual C 151；21 版本包含了 Visual C 152。Visual C 2x 附帶了 16 位和 32 位版本的 CDK，同時支援 Win32s 的開發。Visual C 22 及其後續版本不再升級 Visual C 15（儘管它一直被整合至 Visual C 4x）。儘管出生的比 Windows 95 早，這個版本的發行日期還是非常接近 Windows 95，可是當 Windows 95 發行時，Visual C 40 也已經發行了。因此很多程式開發者直接從 1x 過渡到 40，把 2x 跳過去了。 Visual C 21 21 可透過訂閱服務獲得 Visual C 22 22 可透過訂閱服務獲得 Visual C 40 Olympus 19951211 40 1000 40 0x0400 為與 MFC 版本號對齊，跳過了 VC30 版本號。專門為 Windows 95 以及 Windows NT 設計的。，引入了 Developer Studio IDE，使用者可以透過微軟公司的訂閱服務（Microsoft Subscription Service）升級至 41 版本（包含 Microsoft Game SDK）和 42 版本（此版本不再支援 Win32s 開發）。 為支援老的 Windows 3xDOS 專案，還包含了 Visual C 152 安裝光碟。 VC 30 版本號被跳過，以與 MFC 40 的版本號相同 Visual C 42 42 1020 42 0x0420 Developer Studio 42 Visual C 50 Boston 19970428 50 1100 421 0x0421 21 0x0210 Visual Studio 97 是第一個集成了多個產品 Visual C Visual Basic Visual J。是 42 版以來比較大的一次升級。包含了四個版本： Learning 版 Professional Enterprise RISC Visual C 60 Aspen 1998 年 8 月 60 1200 60 0x0600 30 0x0300 Visual Studio 60 是惟一不用年份命名的 Visual Studio。 MFC DLL 的名字沒有改變，還是叫做 mfc42dll。發行至今一直被廣泛地用於大大小小的專案開發。但是，這個版本在 Windows XP 下執行會出現問題，尤其是在除錯模式的情況下（例如：靜態變數的值並不會顯示）。這個除錯問題可以透過打一個叫「Visual C 60 Processor Pack」的補丁來解決。奇怪的是，這個網頁強呼叫戶也必須執行 Windows 98、Windows NT 40、或 Windows 2000。版本號 12008804 Visual C NET 2002 Rainier 2002 年 70 1300 70 0x0700 70 0x0700 支援連結時程式碼生成和除錯執行時檢查。這個版本還集成了 Managed Extension for C，以及一個全新的使用者介面（與 Visual Basic 和 Visual C 共用）。這也是為什麼 Visual C 60 仍然被廣泛使用的一個主要原因。版本號 13009466 Visual C NET 2003 Everett 2003 年 71 1310 71 0x0710 71 0x0710 類似於 152 但不包括 Control Development Kit eMbedded Visual C 用於 Windows CE 作業系統。Douglas Boling Programming Microsoft Windows CE NET Third Edition Microsoft Press 3rd edition June 25 2003 Paperback 1264 pages ISBN 9780735618848 Companion CD with Microsoft eMbedded Visual C 40 Service Pack 2 Visual C 作為一個獨立的開發環境被 Microsoft Visual Studio 2005 所替代。 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 32bit64bit 版本 Visual C 2005 Whidbey 2005 年 11 月 80 1400 80 0x0800 80 0x0800 引進了全新版本的 CCLI 語言以替換 Managed C，以及 OpenMP 的支援 Visual C 2008 Orcas 2007 年 11 月 90 1500 90 0x0900 90 0x0900 支援NET 35。Visual Studio 2008 Team Suite 更同時支援 x64 與 IA64 編譯 Visual C 2010 Dev10 2010 年 4 月 12 日 100 1600 100 0x0A00 100 0x0A00 Visual C 開發團隊考慮使用 SQL Server Compact 格式的資料庫來儲存原始碼的相關資訊。本版也加入了現代化的 C 並行運算庫 Parallel Patterns Library，部分支援 C0x。本版建構於NET 40 之上，但仍支援機器碼的編譯。 Visual C 2012 Dev11 2012 年 8 月 15 日 110 1700 110 0x0B00 110 0x0B00 支援 Windows Runtime 開發。從該版本起，編譯出的 32 位程式不能在 Windows NT40 2000 XP 上執行，這是因為在程式內部使用了自 Vista 起出現在 kernel32dll 中的 GetTickCount64 函式。解決辦法是在編譯 project 的 platform set 選擇為 Visual Studio 2012 Windows XP v110_xp 。 Visual C 2013 Dev12 2013 年 10 月 17 日 120 1800 120 0x0C00 120 0x0C00 支援 C11 與 C99 特性，並引入了 REST SDK。 RTM version number 180210051 Update 2 version number 180030501 Visual C 2015 Dev14 2015 年 7 月 20 日 140 1900 140 0x0E00 140 0x0E00 改進了對 C1114 支援。 Visual C 2017 Dev15 2017 年 3 月 7 日 1410 1910 1410 0x0E00 1410 0x0E00 從此版本開始，MSVC 版本號與 Visual Studio 版本號不再同步，並且每個子版本都會遞增 MSVC 140 _MSC_VER 1900 Visual Studio 2015 version 140。開始支援 C17 Visual C 2019 Dev16 2019 年 4 月 2 日 1420 1920 1420 0x0E00 1420 0x0E00 開始支援 C20 語言標準支援 C99 在 Visual C 2012 以前，完全不支援 C99 與 C11 的新特性，僅支援 1989 年版的 ANSI C。Visual C 2012 開始在 C 模式下支援 C99 的部分特性，如 designated initializers、compound literals、_Bool 型別。Visual C 2013 很大改進了對 C99 特性的支援。 Visual C 2015 基本上完整支援了 C99 標準庫，但需要編譯器尚未支援的 C99 語言特性的那部分標準庫除外。 C 至 VC2017 Version 157 已經完全實現了 C17 詳細情況見 工具鏈生態環境 Universal CRT UCRT 包含了 C99 執行時庫的函式與全域性變數。UCRT 現在是 Windows component，隨 Windows 10 安裝。UCRT 的靜態庫、DLL 的匯入庫、標頭檔案是 Windows 10 SDK 的一部分。 vcruntime 庫包含 Visual C CRT 實現相關的程式碼，如異常處理、除錯支援、執行時檢查、型別資訊、實現細節與特定擴充套件庫函式。 vcruntime 庫相關於特定編譯器。 CRT C 執行時庫 初始化庫處理程序啟動（CRT startup）、內部的逐執行緒的初始化、終止。CRT 初始化庫相關於特定編譯器。CRT 初始化庫總是靜態連結，即使使用了動態連結的 UCRT。 對於原生代碼與受管程式碼混合的情形，使用 clr 編譯選項，這會動態連結 UCRT 與 vcruntime，靜態連結 msvcmrtlib 或 msvcmrtdlib；msvcmrtlib 或 msvcmrtdlib 提供了受管程式碼與本地 CRT 之間的 proxy。對於純受管程式碼情形，使用 clrpure 編譯選項，這會靜態連結 msvcurtlib 或 msvcurtdlib。 msvcmrtlib、msvcmrtdlib，用於 DLL UCRT 和 vcruntime 的混合本機和託管 CRT 啟動的除錯版本的靜態庫。不可再分發。 UCRT 現在是一個 Windows 元件，並作為 Windows 10 及更高版本的一部分提供。UCRT 的靜態庫、DLL 匯入庫和標頭檔案現在可以在 Windows SDK 中找到。 編譯時，根據專案是除錯版還是釋出版，動態還是靜態連結執行時庫，編譯器可自動使用預設庫。如果使用編譯選項 nodefaultlib，需要顯式指定使用的庫。對於 VC2015，所有下述庫均為多執行緒： 情形 編譯選項 預處理 directives CRT 初始化庫（均為靜態連結） vcruntime 庫 vcruntime DLL Universal CRT UCRT DLL Standard C 庫 Release DLLs MD _MT _DLL msvcrtlib vcruntimelib vcruntimeversiondll ucrtlib ucrtbasedll MSVCPRTLIB 是 MSVCPversiondll 的輸入庫 Debug DLLs MDd _DEBUG _MT _DLL msvcrtdlib vcruntimedlib vcruntimeversionddll ucrtdlib ucrtbaseddll MSVCPRTDLIB 是 MSVCPversionDdll 的輸入庫 Release Static MT _MT libcmtlib libvcruntimelib None libucrtlib None LIBCPMTLIB Debug Static MTd _DEBUG _MT libcmtdlib libvcruntimedlib None libucrtdlib None LIBCPMTDLIB Mixed Release Static clr _MT msvcmrtlib Mixed Debug Static clr _MT msvcmrtdlib Pure Release Static 過時 clrpure _MT msvcurtlib Pure Debug Static 過時 clrpure _MT msvcurtdlib Visual C 執行時庫 Visual C 編譯出的應用程式，其執行環境通常需要安裝 Visual C 執行時庫。官方下載網址見。 Visual C Build tools Microsoft C Build Tools 是一套 MSVC 工具集，透過可指令碼化、單獨安裝器，而不需要 Visual Studio。如果你透過命令列方式開發程式可以使用這套工具。 歷史版本支援 從 2021 年 4 月 26 日開始，Visual Studio 2015 和更老版本的 web 安裝器檔案被從 Microsoft Download Center 刪除。 這些古老的產品可從 Downloads Visual Studio Subscriptions Portal 下載後用 ISO images 安裝。 參見 Visual C 名字修飾 參考文獻 外部連結 Visual Studio Express 首頁 Visual Studio Express 下載頁面 微軟的 Visual C 開發者中心 微軟的 Visual C 開發社群 Building Win32 Applications Using Visual C 2005 Express Visual C STL Templates Tutorial Category 整合開發環境 CategoryC 編譯器 CategoryC 編譯器 CategoryMicrosoft Visual Studio