Кіріспе
Microsoft Visual C++ (MSVC) – Microsoft компаниясының C, C++, C++/CLI және C++/CX бағдарламалау тілдері үшін жасалған компиляторы. MSVC – коммерциялық бағдарламалық құрал; бастапқыда ол жеке өнім ретінде шығарылған, бірақ кейін Visual Studio-ның бір бөлігіне айналып, сынап көру нұсқасы және тегін нұсқасы түрінде қолжетімді болды. Ол C++ кодын жасау және қатесін жою құралдарымен жабдықталған, әсіресе Windows API, DirectX және .NET үшін жазылған кодты. Көптеген бағдарламалар қалыпты жұмыс істеуі үшін қайта таратылатын Visual C++ орындалу уақыты кітапханаларын қажет етеді. Бұл пакеттер қолдайтын бағдарламалардан бөлек орнатылады, соның арқасында бірнеше бағдарлама бір орнату арқылы пакетті пайдалана алады. Visual C++ қайта таратылатын және орындалу пакеттері көбінесе көптеген бағдарламалар қолданатын стандартты кітапханалар үшін орнатылады.
Microsoft Visual C++ (MSVC) is a compiler for the C, C++, C++/CLI and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available in both trialware and freeware forms. It features tools for developing and debugging C++ code, especially code written for the Windows API, DirectX and NET. Many applications require redistributable Visual C++ runtime library packages to function correctly. These packages are frequently installed separately from the applications they support, enabling multiple applications to use the package with only a single installation. These Visual C++ redistributable and runtime packages are mostly installed for standard libraries that many applications use.
Тарих
Visual C++-тың алдыңғы нұсқасы Microsoft C/C++ деп аталды. Microsoft QuickC 2.5 және Windows 1.0 үшін Microsoft QuickC та болды. Visual C++ компиляторы әлі де Microsoft C/C++ деп танылады және Visual C++ 2015 Update 2 нұсқасынан бастап 14.0.23918.0 нөмірін иеленеді.
16-бит нұсқалары
Microsoft C 1.0, Lattice C-ге негізделген, 1983 жылы Microsoft-тың алғашқы C өнімі болды. Ол K&R C талаптарына сай келмеді. C 2.0 үлкен модельдерді қолдауды қосты, бұл код сегменті мен деректер сегменті үшін 1MiB-қа дейін мүмкіндік берді. C 3.0 Microsoft-тың ішінде жасалған алғашқы нұсқасы болды. Бұл нұсқа K&R және кейінгі ANSI стандартына үйлесімділік үшін жасалды. Ол 1984 жылдың басында Microsoft-та (Windows және Xenix үшін) қолданылды. Ол 1985 жылы шығарылды. C 4.0 оптимизацияны және CodeView, бастапқы деңгейдегі жөндеуді қосты. C 5.0 циклдік оңтайландырулар мен үлкен жад моделін (64 КБ-дан үлкен массивтер) қолдауға қосты. 1988 жылы шыққан C 5.1 OS/2 1.x үшін бағдарламаларды компиляциялауға мүмкіндік берді. Он төрт 5.25" дискі (оның екеуі 1,2 МБ, қалғандары 360к) нұсқасына QuickC кірді. OS/2 бағдарламалық жасақтама әзірлеу жиынтығына қосылған он бір 720k 3.5" дискі нұсқасына MASM 5.1 (MSDOS және OS/2 1.x-да жұмыс істейтін бір орындалатын файл) кірді. 1989 жылы шыққан C 6.0 шағын жад моделін қолдауды және ANSI C89 стандартын жақсырақ қолдауды қосты (құжаттамада 100% сәйкес келмейтіндігі нақты айтылған, бірақ ол практикалық мақсаттар үшін жеткілікті жақын көрінеді). Ол Programmer's Workbench IDE, жаһандық ағынды талдау, бастапқы браузер және жаңа жөндеу құралын қосты. Көптеген таңғаларлық жайт, C++ қосылмаған, тіпті бәсекелестердің ұсыныстары болса да. C/C++ 7.0 1992 жылы шығарылды. OS/2 қолдауын тоқтатты. Компиляция үшін 386 процессоры мен DOS-тың 386MAX кеңейтушісі қажет болды, бірақ пайдаланушылар DOS-тың кеңейтушілерін өздерінің бағдарламаларында мақсат етіп жазу үшін кейінірек шығарылған үшінші тараптың бір құралы қажет болды. C++ және MFC (Microsoft Foundation Class Library) 1.0 бағдарламасын қолдау үшін қосылған. Visual C++ 1.0 MFC 2.0-ды қамтитын "Visual" C++-ның 1993 жылдың ақпан айында шыққан алғашқы нұсқасы болды. Ол Cfront 2.1 стандартына сай және екі нұсқада болды: Visual C++ 1.5 1993 жылдың желтоқсанында шығарылды, MFC 2.5 кірді және MFC-ге OLE 2.0 және ODBC қолдауын қосты. Бұл Visual C++-ның CD-ROM-да ғана шығарылған алғашқы нұсқасы болды. Visual C++ 1.51 және 1.52 жазылу қызметінің бөлігі ретінде қол жетімді болды. Visual C++ 1.52b 1.52-ге ұқсас, бірақ оған Control Development Kit кірмейді. Visual C++ 1.52c - бұл 1.5 нұсқасының жаңартылған нұсқасы. Бұл Microsoft Windows 3.x үшін соңғы және, бәлкім, ең танымал даму платформасы. Ол Microsoft Developer Network арқылы қол жетімді.
Visual C++ 1.5 was released in December 1993, included MFC 2.5, and added OLE 2.0 and ODBC support to MFC. It was the first version of Visual C++ that came only on CD ROM. Visual C++ 1.51 and 1.52 were available as part of a subscription service. Visual C++ 1.52b is similar to 1.52, but does not include the Control Development Kit. Visual C++ 1.52c was a patched version of 1.5. It is the last, and arguably most popular, development platform for Microsoft Windows 3. x. It is available through Microsoft Developer Network.
Тек 32 биттік нұсқалар
Visual C++ 1.0 (түпнұсқа атауы: Visual C++ 32 bit Edition) 1993 жылы шығарылған, Intel 386 архитектурасы үшін 32 биттік дамудың алғашқы нұсқасы болды. 16 биттік 1.5 нұсқасы қол жетімді болған кезде шығарылса да, ол OLE2 және ODBC қолдауын қамтымады. Ол Visual C++ 16/32 биттік жиынтығында да қол жетімді болды, оған Visual C++ 1.5 кірді. Visual C++ 2.0, оның ішінде MFC 3.0 бар, тек 32 биттік алғашқы нұсқасы болды. Бұл нұсқа өз уақытынан алда болды, өйткені Windows 95, содан кейін "Чикаго" деген кодты атауы әлі шығарылмаған, ал Windows NT нарықтағы үлесі аз болды. Microsoft Visual C++ 1.52-ге дейінгі 2.x релизінің бөлігі ретінде Visual C++ 1.52-ді енгізді және жаңартты. Сонымен қатар, Control Development Kit (CDK) 16-бит және 32-бит нұсқалары да қамтылды. Visual C++ 2.x Win32s-тің дамуын да қолдады. Ол Microsoft Developer Network арқылы қол жетімді. MIPS және Alpha процессорлары үшін Visual C++ 2.0 RISC Edition, сондай-ақ Macintosh үшін кросс-платформалық нұсқасы (68000 нұсқаулар жиынтығы) болды. Microsoft Visual C++ Cross Development Edition for the Macintosh - бұл Visual C++ үшін қосымша, ол Windows Portability Library-ді енгізді, бастапқыда Macintosh үшін Windows Library деп аталатын, бұл әзірлеушілерге 68000 архитектуралы Macintosh компьютерлеріне құрастырылатын Win32 және MFC API-ге қарсы қосымшалар жазуға мүмкіндік береді. Visual C++ 2.1 және 2.2 2.0-ға арналған жаңартулар болды. 1995 жылғы 11 желтоқсанда шыққан Visual C++ 4.0 бағдарламасында Developer Studio IDE енгізілген. Оның сол кездегі жаңа плиткалы орналасуы - бір-бірімен ауыспайтын панельдер - навигация панелі, құрама редактор / бастапқы деңгейдегі жөндеу панелі және консоль шығыс панелі - Visual Studio өнім желісі арқылы жалғасады (2013 жылға дейін). Visual C++ 4.0 құрамында MFC 4.0 бар, Windows 95 және Windows NT үшін жасалған. Ескі (Windows 3. x/DOS) жобаларын қолдау үшін 4.0 Visual C++ 1.52 орнату CD-мен бірге келді. Жазылым арқылы қол жетімді жаңартулар құрамына Microsoft Game SDK (кейін DirectX SDK ретінде жеке шығарылған) және Visual C++ 4.2 кірді. Версия нөмірі 3.0 Visual C++ 4.0 және MFC 4.0 арасындағы нұсқа нөміріне теңдікті қамтамасыз ету үшін өткізілді. Visual C++ 4.2 Windows 3.x (Win32s) дамуын қолдамады. Бұл Mac үшін кросс-платформалық нұсқасы бар соңғы нұсқасы болды және ол 2. x нұсқасынан PowerPC нұсқаулар жиынтығына компиляцияға мүмкіндік бергенімен ерекшеленді. Visual C++ 5.0 (Visual Studio 97 құрамында) MFC 4.21 кірді және 1997 04 28-де шығарылды, төрт нұсқада қол жетімді: оқыту, кәсіби, корпоративтік және RISC. Visual C++ 6.0 (көбінесе VC6 деп аталады, және Standart, Professional және Enterprise нұсқаларында, сондай-ақ Visual Studio 6.0 құрамында қол жетімді), оған MFC 6.0 кіреді, 1998 жылы шығарылды. Бұл нұсқаның жариялануы біршама даулы болды, өйткені онда MFC-ге күтілетін жаңартулар енгізілмеген. Visual C++ 6.0 әлі де өте танымал және жиі мұралық жобаларды сақтау үшін қолданылады. Алайда, Windows XP-де бұл нұсқада, әсіресе жөндеу режимінде (мысалы, статикалық айнымалылардың мәндері көрсетілмейді) мәселелер бар. Жөндеу мәселелерін "Visual C++ 6.0 Processor Pack" деп аталатын жаңарту арқылы шешуге болады. Версия нөмірі: 12.00.8804 Visual C++ NET 2002 (сонымен қатар Visual C++ 7.0 деп те аталады), MFC 7.0 кіретін, 2002 жылы сілтеме уақытында кодты құру және жөндеуді орындау уақытын тексеруді, NET 1.0 және Visual C# және Басқарылатын C++ қолдаумен шығарылды. Жаңа пайдаланушы интерфейсі Visual Basic-тің көптеген ыстық пернелері мен конвенцияларын қолданды, бұл C++ әзірлеушілері арасында оның танымалдылығының бір бөлігін құрады. Версия нөмірі: 13.00.9466 Visual C++ NET 2003 (сонымен қатар Visual C++ 7.1), MFC 7.1 кіретін, 2003 жылы NET 1.1мен бірге шығарылды және Visual C++ NET 2002-ге үлкен жаңарту болды және C99 "ұзақ ұзын" конструкциясын қолдайтын алғашқы нұсқа болды. Ол Visual C++ NET 2002 жаңарту деп саналды. Осыған сәйкес Visual Studio NET 2003 ағылшын тіліндегі жаңартылған нұсқасы Visual Studio NET 2002 ағылшын тіліндегі нұсқасының иелеріне ең аз шығынға жеткізілді. Windows 98 - ресми түрде қолдау көрсетілетін ең төменгі нұсқа. Қарапайым бағдарламалар Windows 95 және NT 4.0-де жұмыс істесе де, күрделі бағдарламалардың ws2 32. dll сияқты нәрселерге сілтеме жасауы немесе kernel32 функцияларының жоғалуы мүмкін. dll. Компилятордың кейінгі нұсқаларында (Visual C++ 2005) тіпті қарапайым бағдарламалар да жұмыс істемейді (егер сіз C кітапханасын алмастырмасаңыз), өйткені олардың IsDebuggerPresent функциясы бар. dll тек Windows 98 және одан кейінгі нұсқаларда бар. Версия нөмірі: 13.10.3077 eКешіргізілген Visual C++ әртүрлі нұсқаларда Windows CE операциялық жүйесінің кейбір нұсқаларын әзірлеу үшін қолданылды. Бастапқыда ол Visual C++ 6.0 бағдарламасына қосылған құралдардан тұратын даму ортасын алмастырды. eMbedded Visual C++ Microsoft Visual Studio 2005 бағдарламасымен жеке даму ортасы ретінде ауыстырылды.
Visual C++ NET 2002 (also known as Visual C++ 7.0), which included MFC 7.0, was released in 2002 with support for link time code generation and debugging runtime checks, NET 1.0, and Visual C# and Managed C++. The new user interface used many of the hot keys and conventions of Visual Basic, which accounted for some of its unpopularity among C++ developers. Version number: 13.00.9466
Visual C++ NET 2003 (also known as Visual C++ 7.1), which included MFC 7.1, was released in 2003 along with NET 1.1 and was a major upgrade to Visual C++ NET 2002, and was the first version to support the C99 "long long" construct. It was considered a patch to Visual C++ NET 2002. Accordingly, the English language upgrade version of Visual Studio NET 2003 shipped for minimal cost to owners of the English language version of Visual Studio NET 2002. Windows 98 is the lowest officially supported version. Although simple programs will work on Windows 95 and NT 4.0, more complex programs may cause things like ws2 32. dll to be referenced, or functions missing in kernel32. dll. In later versions (Visual C++ 2005) of the compiler even simple programs won't work (unless you replace the C library) because they have a reference to function IsDebuggerPresent in kernel32. dll which only exists in Windows 98 and later. Version number: 13.10.3077
eMbedded Visual C++ in various versions was used to develop for some versions of the Windows CE operating system. Initially it replaced a development environment consisting of tools added onto Visual C++ 6.0. eMbedded Visual C++ was replaced as a separate development environment by Microsoft Visual Studio 2005.
32-бит және 64-бит нұсқалары
Visual C++ 2005 (сонымен қатар Visual C++ 8.0 деп те аталады), оған MFC 8.0 кіреді, 2005 жылдың қараша айында жарық көрді. Бұл нұсқа NET 2.0-ды қолдайды және бұрынғы нұсқаны (Managed C++) алмастыру мақсатында NET фреймворкіне бағытталған C++ (C++/CLI) нұсқасын қамтиды. CLI үшін Managed C++ әлі де компилятор опциялары арқылы қолжетімді. Ол сондай-ақ OpenMP-ді енгізді. Visual C++ 2005-пен бірге Microsoft Team Foundation Server-ді де ұсынды. Visual C++ 8.0 Visual Studio 6.0 қолданып жасалған MFC AppWizard жобаларын компиляциялауда қиындықтар тудырады, сондықтан егер қайта жазу мүмкін болмаса, бұрынғы жобаларды бастапқы IDE арқылы жалғастыруға болады. Visual C++ 2005 – Windows 98 және Windows Me жүйелерін қолдайтын соңғы нұсқа. SP1 нұсқасы (14.00.50727.762) Windows Vista үшін Microsoft Windows SDK жаңартуында да қолжетімді. Visual C++ 2008 (сонымен қатар Visual C++ 9.0 деп те аталады) 2007 жылдың қараша айында жарық көрді. Бұл нұсқа NET 3.5-ті қолдайды. CLI үшін Managed C++ әлі де компилятор опциялары арқылы қолжетімді. Көбінесе, Visual C++ 2008 Runtimes (статикалық және динамикалық байланыс) арқылы компиляцияланған барлық қолданбалар тек Windows 2000, Windows XP SP2 және одан кейінгі нұсқаларда жұмыс істейді. VC9 үшін жарық көрген, кейін SP1-ге енгізілген мүмкіндіктер жиынтығы C++ TR1 кітапханасының кеңейтімдерін қосты. SP1 нұсқасы (15.00.30729.01) Windows 7 үшін Microsoft Windows SDK-да да қолжетімді. Кейбір Visual C++ нұсқалары Itanium 2 жүйесін қолдады. Visual C++ 2010 (сонымен қатар Visual C++ 10.0 деп те аталады) 2010 жылдың 12 сәуірінде жарық көрді. Ол IntelliSense ақпаратын қоса, бастапқы код туралы ақпаратты сақтау үшін SQL Server Compact деректер базасын пайдаланады, бұл IntelliSense және кодты толықтыруды жақсартады. Алайда, Visual C++ 2010 C++/CLI үшін IntelliSense-ті қолдамайды. Бұл нұсқа C++ параллельді есептеу кітапханасы – Parallel Patterns Library-ді қосады, C++11-ді ішінара қолдайды, Edison Design Group алдыңғы бөлігіне негізделген IntelliSense-ті едәуір жақсартады, сондай-ақ компилятор мен жасалған кодтың өнімділігін арттырады. Бұл нұсқа NET 4.0-қа негізделген, бірақ машиналық кодқа компиляциялауды қолдайды. C++11-дің ішінара қолдауы негізінен алты компилятор мүмкіндігінен тұрады: lambdas, rvalue сілтемелері, auto, decltype, static assert және nullptr. C++11 кітапхана мүмкіндіктерін де қолдайды (мысалы, TR1 компоненттерін std::tr1 кеңістігінен тікелей std кеңістігіне көшіру). Variadic үлгілер де қарастырылды, бірақ олардың нашар басымдылығына байланысты кейінгі нұсқаға шегерілді, себебі lambda және rvalue сілтемелері сияқты қымбатқа түсетін мүмкіндіктерден айырмашылығы, variadic үлгілер компилятордың көптеген соңғы пайдаланушыларына емес, кітапхана жазушыларының аз бөлігіне ғана пайдалы болар еді. Көбінесе, Visual C++ 2010 Runtimes арқылы компиляцияланған барлық қолданбалар тек Windows XP SP2 және одан кейінгі нұсқаларда жұмыс істейді. RTM нұсқасы (16.00.30319) Windows 7 және NET Framework 4 (WinSDK v7.1) үшін Windows SDK-да да қолжетімді. SP1 нұсқасы (16.00.40219) Visual Studio 2010 Service Pack 1 құрамында немесе Windows SDK 7.1 үшін Microsoft Visual C++ 2010 Service Pack 1 компилятор жаңартуы арқылы қолжетімді. Visual C++ 2012 (сонымен қатар Visual C++ 11.0 деп те аталады) 2012 жылдың 15 тамызында жарық көрді. Ол C++11 қолдауын және Windows Runtime әзірлеуін жақсартты. Visual C++ 2013 (сонымен қатар Visual C++ 12.0 деп те аталады) 2013 жылдың 17 қазанында жарық көрді. Ол C++11 және C99 қосымша қолдауын ұсынады және REST SDK-ны енгізеді. Visual C++ 2015 (сонымен қатар Visual C++ 14.0 деп те аталады) 2015 жылдың 20 шілдесінде жарық көрді. Ол C++11/14/17 қолдауын жақсартты. Microsoft-тан еш хабарламасыз, Visual Studio 2015 Update 2 компиляцияланған бинарлық файлдарда телеметриялық шақыруларды жасауды бастады. Кейбір пайдаланушылар осы мәселе туралы Microsoft-қа хабарласқаннан кейін, Microsoft болашақ Visual Studio 2015 Update 3-пен компиляцияланғанда осы телеметриялық шақыруларды жоятынын мәлімдеді. Бұл функция Visual Studio 2015 Update 3-те Visual C++ CRT статикалық кітапханаларынан алынып тасталды. Visual C++ 2017 (сонымен қатар Visual C++ 14.1 деп те аталады) 2017 жылдың 7 наурызында жарық көрді. Visual C++ 2019 (сонымен қатар Visual C++ 14.20 деп те аталады) 2019 жылдың 2 сәуірінде жарық көрді. Visual C++ 2022 (сонымен қатар Visual C++ 14.30 деп те аталады) 2021 жылдың 8 қарашасында жарық көрді.
Ішкі нұсқа нөмірлеуі
Visual C немесе C++ бағдарламаларымен жұмыс істегенде бірнеше нұсқа нөмірлерін қарастыру қажет. Олардың ең көнесі және түпнұсқасы – компилятор нұсқасы, ол Microsoft C компиляторының алғашқы күндерінен бері үнемі өсіп келеді. Бұл нұсқаны cl командасын ешқандай параметрлерсіз орындау арқылы алуға болады. Ондықтан кейінгі екі санды алып, ондық нүктені жою арқылы, бұл C препроцессорының MSC VER макросы мен CMake айнымалысы MSVC VERSION мәніне теңеседі. Компилятор құралымдары арасындағы айырмашылықтарды анықтау үшін MSC FULL VER C макросының толық нұсқасын пайдалануға болады. Мысалы, MSC VER "1933" Microsoft C/C++ компиляторының 19.33 нұсқасын, ал MSC FULL VER "193331630" нұсқасын көрсетеді. MSC VER немесе MSC FULL VER мәнін теңдік операторының орнына >= операторымен тексеру керек. Visual өнімінің нұсқасы, мысалы "17.3.4", компилятордың 19.33 нұсқасымен бірге шығарылған Visual Studio нұсқасын көрсетеді. Содан кейін Microsoft Visual C/C++ Runtime Library нұсқасы келеді, мысалы "14.3". Осы мәліметтерден құрал жиынтығының нұсқасын да анықтауға болады, ол орындалу кітапханасы нұсқасының алғашқы үш цифрынан ондық белгіні жою арқылы алынады, мысалы "143". Ол Visual C/C++ орындалу уақыты кітапханасын, компиляторларды, линкерлерді, ассемблерлерді, басқа құрастыру құралдарын, сондай-ақ сәйкес келетін кітапханалар мен заголовок файлдарын қамтиды. Төменде белгілі бір байланысты нұсқа нөмірлерінің кестесі (құрастыруға жарамды) келтірілген. + Visual Studio нұсқалары өнім атауы VC (Нұсқа коды) маркетингтік жыл MSC VER MSC FULL VER орындалу кітапханасы нұсқасы Microsoft C 6.0 600 Microsoft C/C++ 7.0 700 Visual C++ 1.0 1.0 800 1 Visual C++ 2.0 2.0 900 2 Visual C++ 4.0 4.0 1000 4 Visual C++ 4.1 4.1 1010 4.1 Visual C++ 4.2 4.2 1020 4.2 Visual Studio 97 [5.0] 5.0 97 1100 5 Visual Studio 6.0 SP5 6.0 1200 12008804 6 Visual Studio 6.0 SP6 6.0 1200 12008804 6 Visual Studio NET 2002 [7.0] 7.0 2002 1300 13009466 7 Visual Studio NET 2003 Beta [7.1] 7.1 2003 1310 13102292 7.1 Visual Studio Toolkit 2003 [7.1] 7.1 2003 1310 13103052 7.1 Visual Studio NET 2003 [7.1] 7.1 2003 1310 13103077 7.1 Visual Studio NET 2003 SP1 [7.1] 7.1 2003 1310 13106030 7.1 Visual Studio 2005 Beta 1 [8.0] 8.0 2005 1400 140040607 8 Visual Studio 2005 Beta 2 [8.0] 8.0 2005 1400 140050215 8 Visual Studio 2005 [8.0] 8.0 2005 1400 140050320 8 Visual Studio 2005 SP1 [8.0] 8.0 2005 1400 140050727 8 Visual Studio 2008 Beta 2 [9.0] 8.0 2008 1500 150020706 9 Visual Studio 2008 [9.0] 9.0 2010 1500 150021022 9 Visual Studio 2008 SP1 [9.0] 9.0 2010 1500 150030729 9 Visual Studio 2010 Beta 1 [10.0] 10.0 2010 1600 160020506 10 Visual Studio 2010 Beta 2 [10.0] 10.0 2010 1600 160021003 10 Visual Studio 2010 [10.0] 10.0 2010 1600 160030319 10 Visual Studio 2010 SP1 [10.0] 10.0 2010 1600 160040219 10 Visual Studio 2012 [11.0] 11.0 2012 1700 170050727 11 Visual Studio 2012 Update 1 [11.0] 11.0 2012 1700 170051106 11 Visual Studio 2012 Update 2 [11.0] 11.0 2012 1700 170060315 11 Visual Studio 2012 Update 3 [11.0] 11.0 2012 1700 170060610 11 Visual Studio 2012 Update 4 [11.0] 11.0 2012 1700 170061030 11 Visual Studio 2012 November CTP [11.0] 11.0 2012 1700 170051025 11 Visual Studio 2013 Preview [12.0] 12.0 2013 1800 180020617 12 Visual Studio 2013 RC [12.0] 12.0 2013 1800 180020827 12 Visual Studio 2013 [12.0] 12.0 2013 1800 180021005 12 Visual Studio 2013 Update 1 [12.0] 12.0 2013 1800 180021005 12 Visual Studio 2013 Update2 RC [12.0] 12.0 2013 1800 180030324 12 Visual Studio 2013 Update 2 [12.0] 12.0 2013 1800 180030501 12 Visual Studio 2013 Update 3 [12.0] 12.0 2013 1800 180030723 12 Visual Studio 2013 Update 4 [12.0] 12.0 2013 1800 180031101 12 Visual Studio 2013 Update 5 [12.0] 12.0 2013 1800 180040629 12 Visual Studio 2013 November CTP [12.0] 12.0 2013 1800 180021114 12 Visual Studio 2015 [14.0] 14.0 2015 1900 190023026 14 Visual Studio 2015 Update 1 [14.0] 14.0 2015 1900 190023506 14 Visual Studio 2015 Update 2 [14.0] 14.0 2015 1900 190023918 14 Visual Studio 2015 Update 3 [14.0] 14.0 2015 1900 190024210 14 Visual Studio 2017 version 15.0 15.0 2017 1910 191025017 14.1 Visual Studio 2017 version 15.1 15.1 2017 1910 191025017 14.1 Visual Studio 2017 version 15.2 15.2 2017 1910 191025017 14.1 Visual Studio 2017 version 15.3.3 15.3.3 2017 1911 191125507 14.11 Visual Studio 2017 version 15.4.4 15.4.4 2017 1911 191125542 14.11 Visual Studio 2017 version 15.4.5 15.4.5 2017 1911 191125547 14.11 Visual Studio 2017 version 15.5.2 15.5.2 2017 1912 191225831 14.12 Visual Studio 2017 version 15.5.3 15.5.3 2017 1912 191225834 14.12 Visual Studio 2017 version 15.5.4 15.5.4 2017 1912 191225834 14.12 Visual Studio 2017 version 15.5.6 15.5.6 2017 1912 191225835 14.12 Visual Studio 2017 version 15.5.7 15.5.7 2017 1912 191225835 14.12 Visual Studio 2017 version 15.6.0 15.6.0 2017 1913 191326128 14.13 Visual Studio 2017 version 15.6.1 15.6.1 2017 1913 191326128 14.13 Visual Studio 2017 version 15.6.2 15.6.2 2017 1913 191326128 14.13 Visual Studio 2017 version 15.6.3 15.6.3 2017 1913 191326129 14.13 Visual Studio 2017 version 15.6.4 15.6.4 2017 1913 191326129 14.13 Visual Studio 2017 version 15.6.6 15.6.6 2017 1913 191326131 14.13 Visual Studio 2017 version 15.6.7 15.6.7 2017 1913 191326132 14.13 Visual Studio 2017 version 15.7.1 15.7.1 2017 1914 191426428 14.14 Visual Studio 2017 version 15.7.2 15.7.2 2017 1914 191426429 14.14 Visual Studio 2017 version 15.7.3 15.7.3 2017 1914 191426430 14.14 Visual Studio 2017 version 15.7.5 15.7.5 2017 1914 191426433 14.14 Visual Studio 2017 version 15.9.1 15.9.1 2017 1916 191627023 14.16 Visual Studio 2017 version 15.9.4 15.9.4 2017 1916 191627025 14.16 Visual Studio 2017 version 15.9.5 15.9.5 2017 1916 191627026 14.16 Visual Studio 2017 version 15.9.7 15.9.7 2017 1916 191627027 14.16 Visual Studio 2017 version 15.9.11 15.9.11 2017 1916 191627030 14.16 Visual Studio 2019 version 16.0.0 16.0.0 2019 1920 192027508 14.20 Visual Studio 2019 version 16.1.2 16.1.2 2019 1921 192127702 14.21 Visual Studio 2019 version 16.2.3 16.2.3 2019 1922 192227905 14.21 Visual Studio 2019 version 16.3.2 16.3.2 2019 1923 192328105 14.21 Visual Studio 2019 version 16.4.0 16.4.0 2019 1924 192428314 14.24 Visual Studio 2019 version 16.5.1 16.5.1 2019 1925 192528611 14.25 Visual Studio 2019 version 16.6.2 16.6.2 2019 1926 192628806 14.26 Visual Studio 2019 version 16.7 16.7 2019 1927 192729112 14.27 Visual Studio 2019 version 16.8.1 16.8.1 2019 1928 192829333 14.28 Visual Studio 2019 version 16.8.2 16.8.2 2019 1928 192829334 14.28 Visual Studio 2019 version 16.9.0 16.9.0 2019 1928 192829910 14.28 Visual Studio 2019 version 16.9.2 16.9.2 2019 1928 192829913 14.28 Visual Studio 2019 version 16.9.17 16.9.17 2019 1928 192829921 14.28 Visual Studio 2019 version 16.9.18 16.9.18 2019 1928 192829921 14.28 Visual Studio 2019 version 16.9.19 16.9.19 2019 1928 192829923 14.28 Visual Studio 2019 version 16.11.2 16.11.2 2019 1929 192930133 14.29 Visual Studio 2019 version 16.11.8 16.11.8 2019 1929 192930138 14.29 Visual Studio 2019 version 16.11.9 16.11.9 2019 1929 192930139 14.29 Visual Studio 2019 version 16.11.10 16.11.10 2019 1929 192930140 14.29 Visual Studio 2019 version 16.11.11 16.11.11 2019 1929 192930141 14.29 Visual Studio 2019 version 16.11.12 16.11.12 2019 1929 192930142 14.29 Visual Studio 2019 version 16.11.16 16.11.16 2019 1929 192930145 14.29 Visual Studio 2019 version 16.11.24 16.11.24 2019 1929 192930148 14.29 Visual Studio 2019 version 16.11.27 16.11.27 2019 1929 192930151 14.29 Visual Studio 2019 version 16.11.35 16.11.35 2019 1929 192930154 14.29 Visual Studio 2022 version 17.0.1 17.0.1 2022 1930 1...
АБИ
Visual C++ компиляторының ABI тарихи түрде негізгі компилятор нұсқалары арасында өзгеріп келген. Бұл әсіресе STL контейнерлеріне қатысты, онда контейнерлердің мөлшері компилятор нұсқаларына байланысты әртүрлі болған. Сондықтан Microsoft, егер басқа компилятор нұсқасын қолданып құрастырылған клиенттік кодты пайдалану қажет болса, модульдер шекарасында C++ интерфейстерін пайдаланудан аулақ болуға кеңес береді. C++ орнына Microsoft компилятор нұсқалары арасында тұрақты ABI-ды қамтамасыз ету үшін C немесе COM интерфейстерін пайдалануды ұсынады. Барлық 14.x MSVC нұсқалары тұрақты ABI-ға ие, және осы нұсқалармен құрастырылған екілік файлдар келесі шектеулерді ескере отырып, алға қарай үйлесімділікпен араластырылуы мүмкін: пайдаланылған құралдар жиынтығының нұсқасы, кез келген байланысты екілік файлды құру үшін қолданылған ең жоғары құралдар жиынтығының нұсқасына тең немесе одан жоғары болуы керек. MSVC қайта таратылатын нұсқасы, кез келген қосымша компонент қолданатын құралдар жиынтығының нұсқасына тең немесе одан жоғары болуы тиіс. /GL (Толық бағдарламаны оңтайландыру) параметрімен құрастырылған статикалық кітапханалар немесе объект файлдары нұсқалар арасында екілік үйлесімді емес және дәл сол құралдар жиынтығын пайдалануы керек.
The toolset version used must be equal to or higher than the highest toolset version used to build any linked binaries. The MSVC Redistributable version must be equal to or higher than the toolset version used by any application component. Static libraries or object files compiled with /GL (Whole program optimisation) are not binary compatible between versions and must use the exact same toolset.
C орындалу уақытындағы кітапханалар
Visual C++ әртүрлі C орындалу уақыты кітапханаларымен бірге келеді. Бұл пайдаланушыларға кодты қолданыстағы кез келген кітапханамен құрастыруға мүмкіндік береді. Дегенмен, бұл бір бағдарламада әртүрлі компоненттерді (DLL, EXE) пайдаланғанда кейбір мәселелер тудыруы мүмкін. Типтік мысал – әртүрлі кітапханаларды пайдаланатын бағдарлама. Пайдаланушы бағдарламаның барлық компоненттері үшін бірдей C орындалу уақытын пайдалануы керек, оның салдары түсініксіз болмаса. Microsoft мүмкін болатын мәселелерді болдырмау үшін көп жіпті, динамикалық байланыс кітапханасын (/MD немесе /MDd компилятор опциясы) пайдалануды ұсынады. Алайда, POSIX стандартымен үйлесімді жүйелер мұндай асты сызылған атауларды қабылдамайды, сондықтан ескертуді өшіру көбірек мүмкіндік береді.
C++ тілінде
Әдеттегі параметрлермен MSVC екі кезеңді атау іздеуін жасай алмайды, бұл көптеген жарамсыз кодтарды анықтауға тосқауыл қояды. Көптеген тексерулер үлгінің жасалуына дейін кешіктіріледі. Жаңа нұсқалар бұл мәселені шешеді, бірақ оны /permissive командалық қатарының опциясы арқылы қосу қажет.