Microsoft Visual C ++ - Microsoft Visual C++

Vizuální C ++
Ikona Visual Studio 2019.svg
Vývojáři Microsoft
První vydání Únor 1993 ; Před 28 lety ( 1993-02 )
Stabilní uvolnění
14.29.30133 / 27. července 2021
Napsáno C ++
Operační systém Okna
Plošina IA-32 , x86-64 a ARM
K dispozici v Angličtina, čínština (zjednodušená a tradiční), čeština, francouzština, němčina, italština, japonština, korejština, polština, portugalština (brazilština), ruština, španělština, turečtina
Typ IDE
Licence Zkušební a freeware
webová stránka dokumenty .microsoft .com /en-us /cpp /

Microsoft Visual C ++ ( MSVC ) je kompilátor pro programovací jazyky C , C ++ a C ++/CX od společnosti Microsoft . MSVC je proprietární software ; původně to byl samostatný produkt, ale později se stal součástí sady Visual Studio a byl k dispozici ve zkušebních i freewarových formách. Obsahuje nástroje pro vývoj a ladění kódu C ++, zejména kódu napsaného pro Windows API , DirectX a .NET .

Mnoho aplikací vyžaduje pro správnou funkci redistribuovatelné balíčky runtime knihoven Visual C ++. Tyto balíčky jsou často instalovány nezávisle na aplikacích, což umožňuje více aplikacím využít balíček a přitom jej stačí nainstalovat pouze jednou. Tyto redistribuovatelné a runtime balíčky Visual C ++ jsou většinou nainstalovány pro standardní knihovny, které používá mnoho aplikací.

Dějiny

Předchůdce Visual C ++ se jmenoval Microsoft C/C ++ . K dispozici byl také Microsoft QuickC 2.5 a Microsoft QuickC pro Windows 1.0. Kompilátor Visual C ++ je stále známý jako Microsoft C/C ++ a od verze Visual C ++ 2015 Update 2 je ve verzi 14.0.23918.0.

16bitové verze

  • Microsoft C 1.0, založený na Lattice C , byl první C produkt společnosti Microsoft v roce 1983. To nebylo K & R C .
  • C 2.0 přidal podporu velkého modelu.
  • C 3.0 byla první verzí vyvinutou v Microsoftu. Tato verze zamýšlela kompatibilitu s K&R a pozdějším standardem ANSI. To bylo používáno uvnitř Microsoftu (pro Windows a Xenix vývoj) na začátku roku 1984. To bylo dodáno jako produkt v roce 1985.
  • C 4.0 přidal optimalizace a CodeView , ladicí program na úrovni zdroje.
  • Přidána optimalizace smyčky C 5.0 a podpora „obrovského modelu paměti“ ( pole větší než 64 kB). Součástí tohoto projektu byl také Microsoft Fortran a první 32bitový kompilátor pro 80386.
  • C 5.1 vydaný v roce 1988 umožňoval kompilaci programů pro OS/2 1.x.
  • C 6.0 vydaný v roce 1989. Přidal IDE programátoru Workbench , analýzu globálního toku, zdrojový prohlížeč a nový debugger a zahrnoval volitelný front -end C ++ .
  • C/C ++ 7.0 byl vydán v roce 1992. Přidána vestavěná podpora pro C ++ a MFC (Microsoft Foundation Class Library) 1.0.
  • Visual C ++ 1.0, který zahrnoval MFC 2.0, byla první verzí 'Visual' C ++, vydanou v únoru 1993. Byla kompatibilní s Cfront 2.1 a byla k dispozici ve dvou edicích:
    • Standard: nahrazen QuickC pro Windows.
    • Profesionální: nahrazen C/C ++ 7.0. Zahrnuje schopnost vytvářet aplikace pro DOS i Windows, optimalizační kompilátor , zdrojový profiler a Windows 3.1 SDK. Součástí byl také Phar Lap 286 DOS Extender Lite.
  • Visual C ++ 1.5 byl vydán v prosinci 1993, zahrnoval MFC 2.5 a do MFC přidal podporu OLE 2.0 a ODBC . Jednalo se o první verzi Visual C ++, která byla k dispozici pouze na disku CD-ROM .
    • Visual C ++ 1.51 a 1.52 byly k dispozici jako součást předplacené služby.
    • Visual C ++ 1.52b je podobný 1.52, ale neobsahuje Control Development Kit.
    • Visual C ++ 1.52c byla opravená verze 1.5. Je to poslední a pravděpodobně nejpopulárnější vývojová platforma pro Microsoft Windows 3.x. Je k dispozici prostřednictvím Microsoft Developer Network .

Striktně 32bitové verze

  • Visual C ++ 1.0 (původní název: 32bitová edice Visual C ++) byla první verzí pro 32bitový vývoj pro architekturu Intel 386 . Ačkoli byl vydán, když byla k dispozici 16bitová verze 1.5, neobsahovala podporu pro OLE2 a ODBC. Byl také k dispozici v balíčku nazvaném Visual C ++ 16/32-bit Suite, který obsahoval Visual C ++ 1.5.
  • Visual C ++ 2.0, který zahrnoval MFC 3.0, byla první verzí, která byla pouze 32bitová. V mnoha ohledech tato verze předstihla dobu, protože Windows 95 , tehdy s kódovým označením „Chicago“, ještě nevyšel a Windows NT měl jen malý podíl na trhu. Společnost Microsoft zahrnovala a aktualizovala Visual C ++ 1.5 jako součást verzí 2.x až 2.1, které obsahovaly Visual C ++ 1.52, a byla zahrnuta jak 16bitová, tak 32bitová verze Control Development Kit (CDK). Visual C ++ 2.x také podporoval vývoj Win32s . Je k dispozici prostřednictvím Microsoft Developer Network . Existovala edice Visual C ++ 2.0 RISC pro procesory MIPS a Alpha a také multiplatformní edice pro Macintosh ( 68 000 instrukční sada).
    • Visual C ++ 2.1 a 2.2 byly aktualizace pro 2.0 dostupné prostřednictvím předplatného.
  • Visual C ++ 4.0, vydaný 1995-12-11, představil vývojářské studio IDE. Jeho tehdy nové kachlové rozvržení nepřekrývajících se panelů-navigační panel, kombinovaný editor/ladicí panel na úrovni zdroje a výstupní panel konzoly-pokračuje v produktové řadě Visual Studio (od roku 2019). Součástí Visual C ++ 4.0 je MFC 4.0, který byl navržen pro Windows 95 a Windows NT. Aby byla povolena podpora starších projektů (Windows 3.x/DOS), 4.0 byl dodán s instalačním CD Visual C ++ 1.52. Aktualizace dostupné prostřednictvím předplatného zahrnovaly Visual C ++ 4.1, který byl dodán s Microsoft Game SDK (později vydán samostatně jako DirectX SDK) a Visual C ++ 4.2. Verze číslo 3.0 byla přeskočena, aby bylo dosaženo parity čísla verze mezi Visual C ++ 4.0 a MFC 4.0.
  • Visual C ++ 4.2 nepodporoval vývoj Windows 3.x ( Win32s ). Toto byla konečná verze s dostupnou edicí pro různé platformy pro Macintosh a lišila se od verze 2.x v tom, že také umožňovala kompilaci pro instrukční sadu PowerPC .
  • Visual C ++ 5.0, který zahrnoval MFC 4.21 a byl vydán 1997-04-28, byl významným upgradem z 4.2. K dispozici ve čtyřech edicích: Learning, Professional, Enterprise a RISC.
  • Visual C ++ 6.0 (běžně známý jako VC6), který zahrnoval MFC 6.0, byl vydán v roce 1998. Vydání bylo poněkud kontroverzní, protože neobsahovalo očekávanou aktualizaci MFC. Visual C ++ 6.0 je stále velmi populární a často se používá k udržování starších projektů. Existují však problémy s touto verzí v systému Windows XP, zejména v režimu ladění (například hodnoty statických proměnných se nezobrazují). Problémy s laděním lze vyřešit opravou nazvanou „Balíček procesorů Visual C ++ 6.0“. Číslo verze: 12.00.8804
  • Visual C ++ .NET 2002 (také známý jako Visual C ++ 7.0), který zahrnoval MFC 7.0, byl vydán v roce 2002 s podporou generování časového kódu odkazu a ladění kontrol běhu, .NET 1.0 a Visual C# a Managed C ++ . Nové uživatelské rozhraní používalo mnoho horkých kláves a konvencí jazyka Visual Basic , což mělo za následek jeho neoblíbenost mezi vývojáři C ++. Číslo verze: 13.00.9466
  • Visual C ++ .NET 2003 (také známý jako Visual C ++ 7.1), který zahrnoval MFC 7.1, byl vydán v roce 2003 spolu s .NET 1.1 a byl významným upgradem na Visual C ++ .NET 2002. Byl považován za opravu Visual C ++ .NET 2002. V souladu s tím byla anglická jazyková verze Visual Studio .NET 2003 dodána za minimální náklady majitelům anglické jazykové verze Visual Studio .NET 2002. Toto byla poslední verze podporující Windows 95 a NT 4.0 jako cíl. Číslo verze: 13.10.3077
  • Pro vývoj pro některé verze operačního systému Windows CE byl použit eMbedded Visual C ++ v různých verzích . Zpočátku to nahradilo vývojové prostředí sestávající z nástrojů přidaných do Visual C ++ 6.0. eMbedded Visual C ++ byl nahrazen jako samostatné vývojové prostředí Microsoft Visual Studio 2005 .

32bitové a 64bitové verze

  • Visual C ++ 2005 (také známý jako Visual C ++ 8.0), který zahrnoval MFC 8.0, byl vydán v listopadu 2005. Tato verze podporuje .NET 2.0 a obsahuje novou verzi C ++ cílenou na rozhraní .NET framework ( C ++/CLI ) za účelem nahrazení předchozí verze ( Managed C ++ ). Spravovaný C ++ pro CLI je však stále k dispozici prostřednictvím možností kompilátoru. Rovněž představil OpenMP . S Visual C ++ 2005 Microsoft také představil Team Foundation Server . Visual C ++ 8.0 má problémy se kompilací projektů MFC AppWizard, které byly vytvořeny pomocí sady Visual Studio 6.0, takže v případě, že přepis není proveditelný, lze pokračovat v údržbě starších projektů s původním IDE. Visual C ++ 2005 je poslední verze schopná cílit na Windows 98 a Windows Me . Verze SP1 (14.00.50727.762) je k dispozici také v aktualizaci Microsoft Windows SDK Update pro Windows Vista .
  • Visual C ++ 2008 (také známý jako Visual C ++ 9.0) byl vydán v listopadu 2007. Tato verze podporuje .NET 3.5. Spravovaný C ++ pro CLI je stále k dispozici prostřednictvím možností kompilátoru. Ve výchozím nastavení budou všechny aplikace kompilované proti Visual C ++ 2008 Runtimes (statické a dynamické propojení) fungovat pouze pod Windows 2000 a novějším. Balíček funkcí vydaný pro VC9, později zahrnutý v aktualizaci SP1, přidal podporu pro rozšíření knihovny C ++ TR1 . Verze SP1 (15.00.30729.01) je k dispozici také v sadě Microsoft Windows SDK pro Windows 7 .
  • Některé verze Visual C ++ podporovaly Itanium 2 .
  • Visual C ++ 2010 (také známý jako Visual C ++ 10.0) byl vydán 12. dubna 2010. Používá databázi SQL Server Compact k ukládání informací o zdrojovém kódu, včetně informací o IntelliSense , pro lepší podporu technologie IntelliSense a doplňování kódu. Visual C ++ 2010 však Intellisense pro C ++/CLI nepodporuje. Tato verze přidává paralelní výpočetní knihovnu C ++ s názvem Parallel Patterns Library , částečnou podporu pro C ++ 11 , výrazně vylepšenou technologii IntelliSense na základě frontendu Edison Design Group a vylepšení výkonu kompilátoru i generovaného kódu. Tato verze je postavena na .NET 4.0, ale podporuje kompilaci do strojového kódu . Částečná podpora C ++ 11 se skládá hlavně ze šesti funkcí kompilátoru: lambdas, rvalue reference, auto, decltype, static_assert a nullptr. C ++ 11 také podporuje funkce knihovny (např. Přesouvání komponent TR1 z oboru názvů std :: tr1 přímo do oboru názvů std). Zvažovaly se také variadické šablony , ale odložily se až do nějaké budoucí verze, protože měly nižší prioritu, což pramenilo ze skutečnosti, že na rozdíl od jiných nákladně implementovatelných funkcí (lambda, rvalue reference) by variadické šablony prospěly pouze menšině knihovny spíše než většina koncových uživatelů kompilátoru. Ve výchozím nastavení všechny aplikace kompilované proti Visual C ++ 2010 Runtimes fungují pouze v systému Windows XP SP2 a novějších. Verze RTM (16.00.30319) je k dispozici také v sadě Windows SDK pro Windows 7 a .NET Framework 4 (WinSDK v7.1). Verze SP1 (16.00.40219) je k dispozici jako součást aktualizace Visual Studio 2010 Service Pack 1 nebo prostřednictvím aktualizace kompilátoru Microsoft Visual C ++ 2010 Service Pack 1 pro Windows SDK 7.1.
  • Visual C ++ 2012 (také známý jako Visual C ++ 11.0) byl vydán 15. srpna 2012. Nabízí vylepšenou podporu C ++ 11 a podporu pro vývoj Windows Runtime .
  • Visual C ++ 2013 (také známý jako Visual C ++ 12.0) byl vydán 17. října 2013. Nabízí další podporu C ++ 11 a C99 a zavádí REST SDK.
  • Visual C ++ 2015 (také známý jako Visual C ++ 14.0) byl vydán 20. července 2015. Má vylepšenou podporu C ++ 11/14/17. Bez jakéhokoli oznámení od společnosti Microsoft začala aktualizace Visual Studio 2015 Update 2 generovat telemetrická volání v kompilovaných binárních souborech. Poté, co někteří uživatelé kontaktovali společnost Microsoft ohledně tohoto problému, společnost Microsoft uvedla, že při kompilaci s budoucí aktualizací Visual Studio 2015 Update 3 tato telemetrická volání odeberou. Daná funkce byla odebrána ze statických knihoven Visual C ++ CRT v aplikaci Visual Studio 2015 Update 3.
  • Visual C ++ 2017 (také známý jako Visual C ++ 14.1) byl vydán 7. března 2017.
  • Visual C ++ 2019 (také známý jako Visual C ++ 14.2) byl vydán 2. dubna 2019.

Interní číslování verzí

Předdefinované makro _MSC_VERoznačuje čísla hlavní a vedlejší verze kompilátoru Visual C ++. Hodnota makra je celočíselný literál, ve kterém poslední dvě číslice označují číslo vedlejší verze a předchozí číslice číslo hlavní verze.

Z aplikace Visual Studio 2017 _MSC_VERse monotónně zvyšuje při každé aktualizaci sady nástrojů Visual C ++ . Tedy například verze | 14.11 dodávané s Visual Studio 2017 verze 15.3.0 nastaveno _MSC_VERna 1911. Společnost Microsoft doporučuje použít >=operátor k testování hodnoty _MSC_VER.

Zde jsou hodnoty _MSC_VERpro různé verze Visual C ++:

Verze MSC
Verze MSC _MSC_VER
1,0 100
2.0 200
3,0 300
4,0 400
5,0 500
6.0 600
7.0 700
Verze MSVC ++
Verze MSVC ++ _MSC_VER
1,0 800
2.0 900
4,0 1000 (Developer Studio 4.0)
4.2 1020 (Developer Studio 4.2)
5,0 1100 (Visual Studio 5.0)
6.0 1200 (Visual Studio 6.0)
7.0 1300 (Visual Studio 2002 7.0)
7.1 1310 (Visual Studio 2003 7.1)
8,0 1400 (Visual Studio 2005 8.0)
9.0 1500 (Visual Studio 2008 9.0)
10.0 1600 (Visual Studio 2010 10.0)
11.0 1700 (Visual Studio 2012 11.0)
12.0 1800 (Visual Studio 2013 12.0)
14.0 1900 (Visual Studio 2015 14.0)
14.1 1910 (Visual Studio 2017 15.0)
14.11 1911 (Visual Studio 2017 15.3)
14.12 1912 (Visual Studio 2017 15.5)
14.13 1913 (Visual Studio 2017 verze 15.6)
14,14 1914 (Visual Studio 2017 verze 15.7)
14.15 1915 (Visual Studio 2017 verze 15.8)
14.16 1916 (Visual Studio 2017 verze 15.9)
14.2 1920 (Visual Studio 2019 verze 16.0)
14.21 1921 (Visual Studio 2019 verze 16.1)
14.22 1922 (Visual Studio 2019 verze 16.2)
14.23 1923 (Visual Studio 2019 verze 16.3)
14.24 1924 (Visual Studio 2019 verze 16.4)
14.25 1925 (Visual Studio 2019 verze 16.5)
14.26 1926 (Visual Studio 2019 verze 16.6)
14.27 1927 (Visual Studio 2019 verze 16.7)
14.28 1928 (Visual Studio 2019 verze 16.8 + 16.9)
14.29 1929 (Visual Studio 2019 verze 16.10 + 16.11)


Tato čísla verzí odkazují na hlavní číslo verze kompilátorů a knihoven Visual C ++, jak je vidět z instalačních adresářů. Neodkazuje na rok v názvu vydání sady Visual Studio. K dispozici je důkladný seznam.

Všimněte si, že spustitelná verze kompilátoru C ++ odpovídá _MSC_VERa liší se od verze produktu Visual C ++ jako celku. Například cl.exe zahrnutý v 14.22 (Visual Studio 2019 16.2.5) hlásí svou verzi jako 19.22.27905, pokud je spuštěn bez argumentů.

Existuje také _MSC_FULL_VERhodnota definovaná od roku 1200 pro dodatečné informace o čísle sestavení.

Kompatibilita

ABI

Kompilátor ABI Visual C ++ se historicky změnil mezi hlavními vydáními kompilátoru. To platí zejména pro kontejnery STL, kde se velikosti kontejnerů mezi verzemi kompilátoru hodně lišily. Společnost Microsoft proto nedoporučuje používat rozhraní C ++ na hranicích modulů, pokud chcete povolit klientský kód kompilovaný pomocí jiné verze kompilátoru. Místo C ++ společnost Microsoft doporučuje používat rozhraní C nebo COM , která jsou navržena tak, aby mezi vydáním kompilátoru měla stabilní ABI.

Všechny verze 14.x MSVC mají stabilní ABI a binární soubory vytvořené s těmito verzemi lze míchat dopředu kompatibilním způsobem, přičemž je třeba poznamenat následující omezení:

  • Použitá verze sady nástrojů musí být stejná nebo vyšší než nejvyšší verze sady nástrojů použitá k sestavení propojených binárních souborů.
  • Redistribuovatelná verze MSVC musí být stejná nebo vyšší než verze sady nástrojů používaná jakoukoli komponentou aplikace.
  • Statické knihovny nebo objektové soubory kompilované s /GL (optimalizace celého programu) nejsou binárně kompatibilní mezi verzemi a musí používat přesně stejnou sadu nástrojů.

C runtime knihovny

Visual C ++ se dodává s různými verzemi runtime knihoven C. To znamená, že uživatelé mohou kompilovat svůj kód pomocí jakékoli z dostupných knihoven. To však může způsobit problémy při používání různých komponent ( DLL , EXE ) ve stejném programu. Typickým příkladem je program využívající různé knihovny . Uživatel by měl používat stejný C Run-Time pro všechny součásti programu, pokud nejsou pochopeny důsledky. Společnost Microsoft doporučuje použít vícevláknovou dynamickou knihovnu odkazů (možnost /MD nebo /MDd kompilátor), aby se předešlo možným problémům.

POSIX

Přestože CRT společnosti Microsoft implementuje velkou podmnožinu rozhraní POSIX , kompilátor Visual C ++ ve výchozím nastavení vydá varování při každém použití těchto funkcí. Důvodem je, že standardy C a C ++ vyžadují před implementací definovaná rozhraní předponu podtržítka, takže použití těchto funkcí je nestandardní. Systémy, které jsou ve skutečnosti kompatibilní s POSIX, by však tyto podtržené názvy nepřijímaly a je přenosnější místo toho varování jednoduše vypnout.

C

Přestože produkt vznikl jako IDE pro programovací jazyk C , podpora kompilátoru pro tento jazyk po mnoho let odpovídala pouze původnímu vydání standardu C z roku 1989, nikoli však revizi standardu C99 . Ani v roce 2011, více než deset let po jeho zveřejnění, nebylo v plánu podporovat C99.

Visual C ++ 2013 konečně přidal podporu pro různé funkce C99 v jeho režimu C (včetně určených inicializátorů, složených literálů a _Booltypu), i když stále nebyl úplný. Visual C ++ 2015 dále vylepšilo podporu C99 s plnou podporou standardní knihovny C99, kromě funkcí, které vyžadují funkce jazyka C99, které kompilátor ještě nepodporuje.

Většina změn z revize standardu C11 stále není podporována aplikací Visual C ++ 2017. Generické výběry prostřednictvím _Genericklíčového slova například kompilátor nepodporuje a vedou k chybě syntaxe.

Preprocesor byl v roce 2018 přepracován a na dohled byl C11:

Plná shoda C11 je na našem plánu a aktualizace preprocesoru je jen prvním krokem v tomto procesu. Funkce C11 _Genericnení ve skutečnosti součástí preprocesoru, takže ještě nebyla implementována. Při implementaci očekávám, že funkce bude fungovat nezávisle na tom, zda se používá tradiční nebo aktualizovaná logika preprocesoru.

_Generic podpora byla poskytnuta MSVC od února 2020, není jasné, kdy bude dodána.

V září 2020 společnost Microsoft oznámila podporu standardů C11 a C17 v MSVC.

Reference

Další čtení

externí odkazy