Visual C++

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Visual C++
Vývojář Microsoft
První vydání únor 1993
Aktuální verze 2015 (20. července 2015)
Operační systém Microsoft Windows
Platforma IA-32, x86-64 a Itanium 2
Vyvíjeno v C++[1]
Typ softwaru Vývojové prostředí (IDE)
Licence Trialware a freeware
Web msdn.microsoft.com/en-us/library/60k1461a.aspx

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 32-bitové verze[editovat | editovat zdroj]

  • Visual C++ 1.0 (původní název: Visual C++ 32-bit Edition) byla první verzí 32-bitového vývoje.[9] I přestože byla vydána, když byla k dispozici verze 16-bit 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í, kerá byla pouze 32-bitová. 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ň 16-bit a 32-bit 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 MIPSAlpha 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.

32-bit a 64-bitové 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]

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++:

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

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. Poté, co někteří uživatelé kontaktovali společnost Microsoft o tomto problému, tak Microsoft řekl, že odstraní tyto telemetrická volání u budoucího Visual Studia 2015.[47][48] Funkce byla odstraněna z Visual C++ CRT statické knihovny 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]. [1]. (anglicky) 
  2. "Do I need these Microsoft Visual C++ redistributables?"
  3. LADD, Scott Robert. Optimizing With Microsoft C 6.0 [online]. August 1, 1990. [2]. (anglicky) 
  4. Retrieved from http://support.microsoft.com/kb/196831.
  5. a b Parametr "periodikum" je povinný! . Dostupné online.  
  6. "Visual C++ adds Windows support".
  7. Parametr "periodikum" je povinný! . Dostupné online.  
  8. Parametr "periodikum" je povinný! . Dostupné online.  
  9. Parametr "periodikum" je povinný! . Dostupné online.  
  10. Parametr "periodikum" je povinný! . Dostupné online.  
  11. . Dostupné online.  
  12. a b . Dostupné online.  
  13. [s.l.] : [s.n.]. Dostupné online. ISBN 9780672308741.  
  14. . Dostupné online.  
  15. . Dostupné online.  
  16. . Dostupné online.  
  17. . Dostupné online.  
  18. . Dostupné online.  
  19. . Dostupné online.  
  20. . Dostupné online.  
  21. . 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. . Dostupné online.  
  28. . Dostupné online.  
  29. . Dostupné online.  
  30. . Dostupné online.  
  31. . Dostupné online.  
  32. . 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. . Dostupné online.  
  35. . Dostupné online.  
  36. . Dostupné online.  
  37. . 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. . Dostupné online.  
  44. . Dostupné online.  
  45. . Dostupné online.  
  46. . Dostupné online.  
  47. Reviewing Microsoft's Automatic Insertion of Telemetry into C++ Binaries
  48. . Dostupné online.