Microsoft Visual C++

Z Wikipedie, otevřené encyklopedie
(přesměrováno z MSVC)
Microsoft Visual C++
Logo
VývojářMicrosoft
První vydáníúnor 1993
Aktuální verze14.38.33135
Operační systémMicrosoft Windows
PlatformaIA-32, x86-64, Itanium 2 a ARM
Vyvíjeno vC++[1]
Typ softwaruVývojové prostředí (IDE)
LicenceTrialware a freeware
Webhttps://docs.microsoft.com/cs-cz/cpp/
Některá data mohou pocházet z datové položky.

Microsoft Visual C++ (často označován jako MSVC nebo VC++) je v informatice název vývojového prostředí (IDE) od společnosti Microsoft pro programovací jazyky C, C++ a C++/CLI. MSVC je proprietární software; původně se jednalo o samostatný produkt, ale později se stal součástí Visual Studio a jsou k dispozici jako trialware a freeware. MSVC nabízí nástroje pro vývoj a ladění kódu v jazyce C++, a to zejména kód napsaný pro Windows API, DirectX a .NET Framework.

Mnoho aplikací vyžaduje instalaci volně distribuovatelných balíčků pro Visual C++, aby byly funkční. Tyto balíčky jsou často instalovány nezávisle na aplikacích, což umožňuje více aplikacím využít jeden balíček bez nutnosti opětovné instalace. Tyto volně distribuovatelné a runtime balíčky pro Visual C++ jsou většinou instalovány jako standardní knihovny, které pak aplikace využívají.[2]

Historie[editovat | editovat zdroj]

Předchůdce jazyka Visual C++ byl nazýván Microsoft C/C++. Existoval také Microsoft QuickC 2.5 a Microsoft QuickC pro Windows 1.0. Překladač Visual C++ je ještě známý jako Microsoft C/C++ a od vydání 2. aktualizace Visual C++ 2015 je jeho aktuální verze 19.00.23918.

16bitové verze[editovat | editovat zdroj]

  • Microsoft C 1.0, založené na Lattice C, byl v roce 1983 prvním jazykem C od firmy Microsoft, ale nebyl kompatibilní s K&R C.
  • C 2.0 přidána podpora velkého modelu.
  • C 3.0 byla první verze vyvinutá uvnitř Microsoftu. Tato verze zajistila kompatibilitu s K&R C a později i s ANSI standardem. Byla používána v Microsoftu (pro vývoj systémů Windows a XENIX) na počátku roku 1984. Jako oficiální produkt byla vydána v roce 1985.
  • C 4.0 přidána optimalizace a CodeView.
  • C 5.0 přidána optimalizace smyček a podpora Huge modelu (pole větší než 64 KiB). Součástí projektu byl také Microsoft Fortran a první 32bitový kompilátor pro procesor Intel 80386.
  • C 5.1 vydán v roce 1988, umožnil sestavování programů pro OS/2 1.x.
  • C 6.0 vydán v roce 1989. Dodal globální analýzu toku, prohlížeč zdrojových kódů, nový debugger a volitelný C++ forntend.[3]
  • C++ 7.0 byla vydána v roce 1992. Přidána vestavěná podpora pro C++ a MFC (Microsoft Foundation Class Library) 1.0.[4]
  • Visual C++ 1.0, která zahrnovala MFC 2.0, byla první verzí Visual C++, vydánou v únoru roku 1993. Byla Cfront 2.1 kompatibilní[5] a je k dispozici ve dvou edicích:[6]
    • Standard – nahrazuje QuickC pro Windows.
    • Professional – nahrazuje C/C++ 7.0 a má schopnost postavit DOS a Windows aplikace. Zahrnuje optimalizující kompilátor, profiler zdrojového kódu a Windows 3.1 SDK.[5] Obsažen byl také Phar Lap 286 DOS Extender Lite.[7]
  • Visual C++ 1.5 byla vydána v prosinci rok 1993, včetně MFC 2.5, zahrnovala OLE 2.0 a ODBC podporu pro MFC.[8] Byla to první verze Visual C++, která byla dostupná pouze na CD-ROM.
    • Visual C++ 1.51 a 1.52 byly k dispozici pouze jako součást předplatné služby.
    • Visual C++ 1.52 b je podobný 1.52, ale nezahrnoval Control Development Kit.
    • Visual C++ 1.52 c je opravenou verzí 1.5. Byla to poslední a pravděpodobně nejvíce populární vývojová platforma pro Microsoft Windows 3.x. Je k dispozici prostřednictvím webu Microsoft Developer Network.

Pouze 32bitové verze[editovat | editovat zdroj]

  • Visual C++ 1.0 (původní název: Visual C++ 32-bit Edition) byla první verzí 32bitového vývoje.[9] I přestože byla vydána, když byla k dispozici verze 16bit 1.5, tak nezahrnovala podporu pro OLE2 a ODBC. Byla také dostupná v balíčku Visual C++ 16/32-bit Suite, který zahrnoval Visual C++ 1.5.[10]
  • Visual C++ 2.0, zahrnující MFC 3.0, byla jedinou verzí, která byla pouze 32bitová. V mnoha směrech byla tato verze nadčasová. Když Windows 95, později pod krycím názvem "Chicago", ještě nebyl vydaný a Windows NT měl jen malý podíl na trhu. Výsledně to bylo skoro označeno jako "ztracená generace". Microsoft zahrnul a vylepšil Visual C++ 1.5 jako část 2.x vydání do 2.1, které zahrnuly Visual C++ 1.52, a zároveň 16bit a 32bit verze CDK byly přidány. Visual C++ 2.x také podporoval vývoj Win32s. Je dostupný na Microsoft Developer Network. Byla tu ještě edice Visual C++ 2.0 RISC pro MIPS a Alpha procesory, stejně tak jako pro multiplatformovou edici pro Macintosh (se sadou instrukcí 68000).[11]
    • Visual C++ 2.1 a 2.2 byly aktualizace pro 2.0, které byly dostupné z předplatného.
  • Visual C++ 4.0, vydána 11.12.1995[12] představila vývojové prostředí IDE, které má kachlová rozložení s nepřekrývajícími se panely — navigační panel, kombinace editor/zdroj úrovně debugger panelu, a výstup na konzolovém panelu[13]— pokračuje do Visual Studio produktových řad (od roku 2013). Visual C++ 4.0 zahrnuly MFC 4.0. Byly určeny pro Windows 95 a Windows NT. Povolili podporu starších (Windows 3.x/DOS) projektů. 4.0 byly dostupné s Visual C++ 1.52 instalačním CD. Aktualizace je k dispozici prostřednictvím předplatného, ve kterém je zahrnuta verze Visual C++ 4.1, která přišla s Microsoft Game SDK (později vydána samostatně jako DirectX SDK), a s Visual C++ 4.2. Verze 3.0 byla přeskočena, aby se dosáhlo číslo s paritou mezi Visual C++ 4.0 a MFC 4.0..[14]
  • Visual C++ 4.2 nepodporovaly vývoj Windows 3.x (Win32s).[15] Toto byla poslední verze s multiplatformovou edicí pro počítače Macintosh, která byla k dispozici. Liší se od 2.x verzí, ve kterých je také možnost kompilace pro procesory s instrukční sadou. PowerPC.
  • Visual C++ 5.0 zahrnovala MFC 4.21 a byla vydána 28.04.1997.[12] Byla o hodně více vylepšená na rozdíl od verze 4.2.[16] Dostupná ve čtyřech edicích: Learning,[17] Professional,[18] Enterprise,[19] a RISC.[20]
  • Visual C++ 6.0 (běžně známá jako VC6), zahrnovala MFC 6.0 a byla vydána v roce 1998.[21] Vydání bylo poněkud kontroverzní, neboť neobsahovalo očekávanou aktualizaci na MFC. Visual C++ 6.0 je stále velmi populární a často používán k udržování zpětné kompatibility starších projektů. Existují však problémy s touto verzi u Windows XP, a to zejména pod režimem debugu (například u hodnot statické proměnné se nezobrazí). Debugging problémů může být řešené s "Visual C++ 6.0 Procesor Pack". [22] Čí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 pro LTCG a "debugging runtime control" .NET 1.0 a Visual C# a Managed C++. Nové uživatelské rozhraní používá mnoho klávesových zkratek a konvencí jazyka, které se projevily na negativní odezvě od C++ vývojářů.[zdroj?] Čí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 hlavní upgrade ve Visual C++ .NET 2002. Proto byly anglické jazykové verze na upgrade z Visual Studio .NET 2003 dodány za minimální náklady pro majitele anglických verzí Visual Studia .NET 2002. Toto byla poslední verze, která prioritně podporovala Windows 95 a NT 4.0.[zdroj?] Číslo verze: 13.10.3077
  • eMbedded Visual C++[23] v různých verzích bylo použito k vytvoření pro některé verze operačního systému Windows CE. Zpočátku nahrazuje vývojové prostředí, které se skládalo z nástrojů přidaných do Visual C++ 6.0. eMbedded Visual C++ bylo nahrazeno jako samostatné vývojové prostředí Microsoft Visual Studio 2005.

32bitové a 64bitové verze[editovat | editovat zdroj]

  • Visual C++ 2005 (také známé jako Visual C++ 8.0), které zahrnovalo MFC 8.0, bylo vydáno v listopadu 2005. Tato verze podporuje .NET 2.0 a obsahuje nové verze C++ pro .NET framework (C++/CLI) , které mají cíl nahradit předchozí verzi (Managed C++). Managed C++ pro CLI je stále k dispozici prostřednictvím možnosti kompilátoru. Také tím bylo představeno OpenMP. S Visual C++ 2005, Microsoft také představil Team Foundation Server. Visual C++ 8.0 má problémy se sestavováním MFC AppWizard projektů, které byly vytvořeny s Visual Studiem 6.0, tudíž údržba stávajících projektů může být i nadále s původní IDE, pokud není povolené přepisování. Visual C++ 2005 je poslední verze, která je zaměřená na Windows 98 a Windows Me.[24][25] SP1 verze (14.00.50727.762) je dostupná na Microsoft Windows SDK Update for Windows Vista.
  • Visual C++ 2008 (také známé jako Visual C++ 9.0) bylo vydáno listopadu 2007. Tato verze podporuje .NET 3.5. Managed C++ pro CLI a je stále k dispozici prostřednictvím možnosti kompilátoru. Z výchozího nastavení všechny aplikace zkompilované proti Visual C++ 2008 Runtime (statické a dynamické linkování) budou fungovat pouze pod Windows 2000 a novější.[26][27] Balíček funkcí vydán pro VC9, který byl později zahrnut v SP1 umožnil podporu pro rozšíření knihovny C++ TR1. Verze SP1 (15.00.30729.01) je také dostupná na Microsoft Windows SDK for Windows 7.
  • Visual C++ 2010 (také známé jako Visual C++ 10.0) bylo vydáno 12. dubna 2010. Používá databázi SQL Server Compact k uchování informaci o zdrojovém kódu, obsahujíc informace IntelliSense pro jehož vylepšení a podporu dokončování kódu.[28] Na druhou stranu Visual C++ 2010 nepodporuje IntelliSense pro C++/CLI.[29] Tato verze přidává C++ paralelní knihovnu zvanou Parallel Patterns Library. Tato verze je postaveena na.NET 4.0, avšak podporuje kompilaci do strojového kódu. Částečná podpora pro C++11 se převážně skládá z šesti funkcí kompilátoru:[30] lambdy, rvalue reference, auto, decltype, static_assert, a nullptr. C++11 také podporuje funkce knihovny (např. přemístění součástí TR1 z std::tr1 namespace přímo do std namespace). O variadických šablonách se také uvažovalo, že by se zahrnuly, ale tento nápad byl odložen do jiné budoucí verze , protože měly malou prioritu, což pramenilo z toho faktu, že - na rozdíl od jiných "costly-to-implement" funkcí (lambda, rvalue reference) - variadické šablony by prospěly víc menšině tvůrců knihoven, než většině kompilujících koncových uživatelů.[31] Ze základu byly všechny aplikace zkompilovaná proti Visual C++ 2010 Runtimes pracují pouze na Windows XP SP2 a na pozdějších jiných verzích. RTM verze (16.00.30319) je také dostupná ve Windows SDK pro Windows 7 a .NET Framework 4 (WinSDK v7.1).[32] Verze SP1 (16.00.40219) je dostupná jako součást Visual Studio 2010 SP1 nebo skrze Microsoft Visual C++ 2010 SP1 Compiler aktualizace pro Windows SDK 7.1.[33]
  • Visual C++ 2012 (také známé jako Visual C++ 11.0) bylo vydáno 15. srpna 2012. Obsahuje vylepšenou podporu pro C++11 a vývojové prostředí Windows Runtime.[34]
  • Visual C++ 2013 (také známé jako Visual C++ 12.0) bylo vydáno 17. října 2013. Obsahuje další podporu pro C++11, C99 a přináší REST SDK.[35]
  • Visual C++ 2015 (také známé jako Visual C++ 14.0) bylo vydáno 20. června 2015.[36] Obsahuje znovu vylepšenou podporu pro C++11/14/17.[37]

Kompatibilita[editovat | editovat zdroj]

ABI[editovat | editovat zdroj]

Kompilátor Visual C++ ABI se průběžně historicky změnil mezi vydáváním velkých množství kompilátorových aktualizací.[38] To je zejména případ obsahu STL, kde se velikosti obsahu velice měnily mezi verzemi kompilátorů.[39] Microsoft proto doporučuje používání C++ rozhraní v hraničních modulech, když jeden chce, aby klientský kód zkompilovaný pomocí různých kompilátorových verzí. Namísto C++, Microsoft doporučuje používat rozhraní C[40] nebo COM[41], které jsou navrženy tak, aby měli stabilní ABI mezi verzemi kompilátoru.

C runtime knihovny[editovat | editovat zdroj]

Visual C++ pracuje s různými verzemi C runtime knihovnen.[42] To znamená, že uživatelé mohou sestavit svůj kód s jakoukoliv z dostupných knihoven. Nicméně, to může způsobit určité problémy při použití různých komponentů (knihoven Dll, Ex) ve stejném programu. Typickým příkladem je program, který používá různé knihovny. Uživatel by měl používat stejný C Run-Time pro všechny programové komponenty, pokud jsou důsledky zřejmé. Společnost Microsoft doporučuje používat multithreaded, dynamické propojení knihovny (/MD nebo /MDd možnost kompilátoru), aby se zabránilo případným problémům.[42]

C99[editovat | editovat zdroj]

I když výrobek vznikl jako IDE pro programovací jazyk C, tak pro mnoho let byla podpora kompilátoru pro tento jazyk přizpůsobena pouze původnímu vydání C standard, pocházející z roku 1989. Novější revize standardu C99 a C11, nebyly podporovány vůbec[43] , dokud Visual C++ 2012, které přidalo podporu pro různé C99 funkce v režimu C (včetně určených inicializátorů, složených literálů a typ _Bool). Visual C++ 2013 výrazně zlepšila C99 podporu, i když ještě stále není kompletní.[44] Visual C++ 2015 dále zlepšuje podporu C99 s plnou podporou pro Standardní knihovnu C99, s výjimkou funkcí, které vyžadují funkce jazyka C99 nejsou zatím podporovány kompilátorem.[45]

POSIX[editovat | editovat zdroj]

Ačkoli CRT společnosti Microsoft implementuje velkou podmnožinu rozhraní POSIX, kompilátor Visual C++ bude ve výchozím nastavení vydávat varování při každém použití takových 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í.[46] Systémy, které jsou ve skutečnosti kompatibilní s POSIX, by však tato podtržená jména nepřijaly a je přenosnější místo toho varování prostě vypnout.

Běžné verze MSVC[editovat | editovat zdroj]

Předdefinované makro _MSC_VER označuje hlavní a vedlejší verze čísel kompilátoru Visual C++. Hodnota makra je integer, ve kterém poslední dvě číslice udávají číslo dílčí a předchozí číslice označují číslo hlavní.

Zde jsou hodnoty _MSC_VER různých verzí kompilátoru Visual C++:

MSVC++ 5.0  _MSC_VER == 1100
MSVC++ 6.0  _MSC_VER == 1200
MSVC++ 7.0  _MSC_VER == 1300
MSVC++ 7.1  _MSC_VER == 1310 (Visual Studio 2003)
MSVC++ 8.0  _MSC_VER == 1400 (Visual Studio 2005)
MSVC++ 9.0  _MSC_VER == 1500 (Visual Studio 2008)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)

Tyto verze čísel odkazují na hlavní verzi čísla Visual Studia, které může být spatřeno uvnitř Visual Studio "About" boxu. To se nevztahuje k roku v názvu. Celý seznam je k dispozici.[47]

Spory[editovat | editovat zdroj]

Bez jakéhokoliv oznámení od společnosti Microsoft začalo po 2. aktualizaci Visual Studio 2015 generovat telemetrické volání v kompilovaných binárních souborech. Někteří uživatelé kvůli tomuto problému kontaktovali společnost Microsoft, která následně přislíbila, že tato telemetrická volání u budoucího Visual Studia 2015 odstraní.[48][49] Funkce byla ze statické knihovny Visual C++ CRT odstraněna v 3. aktualizaci aplikace Visual Studio 2015.[zdroj?]

Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Visual C++ na anglické Wikipedii.

  1. LEXTRAIT, Vincent. The Programming Languages Beacon, v10.0 [online]. January 2010 [cit. 2010-03-14]. Dostupné v archivu pořízeném dne 2012-05-30. 
  2. "Do I need these Microsoft Visual C++ redistributables?"
  3. LADD, Scott Robert. Optimizing With Microsoft C 6.0 [online]. August 1, 1990 [cit. 2017-01-04]. Dostupné v archivu pořízeném dne 2017-03-20. 
  4. Retrieved from http://support.microsoft.com/kb/196831.
  5. a b Visual C++ is a strong development tool. InfoWorld. June 21, 1993, s. 94. Dostupné online. 
  6. "Visual C++ adds Windows support".
  7. Rival DOS Extenders debut at show. InfoWorld. March 1, 1993, s. 18. Dostupné online. 
  8. Visual C++ 1.5 integrates OLE, ODBC. InfoWorld. November 8, 1993, s. 5. Dostupné online. 
  9. Microsoft set to prerelease 32-bit Visual C++. InfoWorld. July 19, 1993, s. 12. Dostupné online. 
  10. C++ IDEs evolve. InfoWorld. April 4, 1994, s. 79. Dostupné online. 
  11. Microsoft Visual C++ Strategy [online]. Dostupné online. 
  12. a b Obsolete Products [online]. Dostupné online. 
  13. TOTH, Viktor. Visual C++ 4.0 unleashed. Indianapolis: SAMS Publishing, 1996. Dostupné online. ISBN 9780672308741. Kapitola 1. 
  14. History of Visual Studio (Part 3) [online]. Dostupné online. 
  15. Major Changes from Visual C++ 4.0 to 4.2 [online]. Dostupné online. 
  16. Major Changes from Visual C++ 4.2 to 5.0 [online]. Dostupné online. 
  17. Microsoft Visual C++ 5.0 Learning Edition [online]. Dostupné v archivu pořízeném z originálu dne April 27, 1999. 
  18. Microsoft Visual C++ 5.0 Professional Edition [online]. Dostupné v archivu pořízeném z originálu dne April 27, 1999. 
  19. Microsoft Visual C++ 5.0 Enterprise Edition [online]. Dostupné v archivu pořízeném z originálu dne April 17, 1999. 
  20. Microsoft Visual C++ 5.0 RISC Edition [online]. Dostupné v archivu pořízeném z originálu dne April 29, 1999. 
  21. Major Changes from Visual C++ 5.0 to 6.0 [online]. Dostupné online. 
  22. This page stresses that Users must also be running Windows 98, Windows NT 4.0, or Windows 2000.
  23. Douglas Boling :Programming Microsoft Windows CE .
  24. How to: Modify WINVER and _WIN32_WINNT
  25. Breaking Changes
  26. Windows Platforms (CRT)
  27. Visual C++ 2008 Breaking Changes [online]. Dostupné online. 
  28. Visual C++ Team Blog. IntelliSense, part 2: The Future [online]. [cit. 2008-03-12]. Dostupné online. 
  29. Why IntelliSense is not supported for C++/CLI in Visual Studio 2010 [online]. [cit. 2011-03-13]. Dostupné online. 
  30. C++0x Core Language Features In VC10: The Table [online]. Dostupné online. 
  31. Stephan T. Lavavej: Everything you ever wanted to know about nullptr [online]. Dostupné online. 
  32. Microsoft Windows SDK Blog. Released: Windows SDK for Windows 7 and .NET Framework 4 [online]. Dostupné online. 
  33. FIX: Visual C++ compilers are removed when you upgrade Visual Studio 2010 Professional or Visual Studio 2010 Express to Visual Studio 2010 SP1 if Windows SDK v7.1 is installed
  34. What's New for Visual C++ in Visual Studio 2012 [online]. Microsoft [cit. 2015-09-20]. Dostupné online. 
  35. What's New for Visual C++ in Visual Studio 2013 [online]. Miicrosoft [cit. 2015-09-20]. Dostupné online. 
  36. Eric Battalio. Visual Studio 2015 RTM Now Available [online]. Microsoft, July 20, 2015. Dostupné online. 
  37. Stephan T. Lavavej. C++11/14/17 Features In VS 2015 RTM [online]. Microsoft, June 19, 2015. Dostupné online. 
  38. Microsoft MSDN: Breaking Changes in Visual C++
  39. Microsoft MSDN: Containers (Modern C++)
  40. Microsoft MSDN: Portability At ABI Boundaries (Modern C++)
  41. Microsoft forum: Binary compatibility across Visual C++ versions
  42. a b C Run-Time Libraries
  43. C99 support [online]. Dostupné online. 
  44. Pat Brenner. C99 library support in Visual Studio 2013 [online]. Microsoft, July 19, 2013. Dostupné online. 
  45. What's New for Visual C++ in Visual Studio 2015 [online]. Microsoft. Dostupné online. 
  46. Other Application Blocks and Advanced Configuration Features. Berkeley, CA: Apress Dostupné online. ISBN 978-1-59059-655-5, ISBN 978-1-4302-0315-5. S. 439–468. 
  47. Pre-defined Compiler Macros / Wiki / Compilers [online]. [cit. 2016-02-11]. Dostupné online. 
  48. Reviewing Microsoft's Automatic Insertion of Telemetry into C++ Binaries
  49. Visual Studio adding telemetry function calls to binary? • /r/cpp [online]. [cit. 2016-08-17]. Dostupné online.