Visual C++

Compiler von Microsoft für C++

Microsoft Visual C++ (Abkürzung: MSVC) ist ein Compiler des Unternehmens Microsoft zur Entwicklung von Software in der Programmiersprache C++ unter dem Betriebssystem Windows und anderen Betriebssystemen von Microsoft.

Visual C++

Basisdaten

Entwickler Microsoft
Erscheinungsjahr 1993
Aktuelle Version 14.42.34226.3[1]
(13. August 2024)
Betriebssystem Microsoft Windows
Programmier­sprache C++
Kategorie Compiler
Lizenz Freeware, Shareware
docs.microsoft.com/cpp/

Aktuelle Versionen von Visual C++ verfügen über den erweiterten C++-Befehlssatz C++/CLI, der unter anderem die Nutzung der .Net-Framework-Programmierung vereinfachen soll.

Visual C++ Produkte wurden als grafische Entwicklungswerkzeuge konzipiert und werden daher meist zusammen mit einer Entwicklungsumgebung ausgeliefert. Diese war anfangs auf die reine C++ Entwicklung ausgelegt und unterschied sich von anderen IDEs wie jenen von Visual Basic oder Java.

Durch die .NET Strategie wurden mit Visual Studio 2002 alle unterstützten Sprachen (C++, C#, VB.NET) in einer einzigen grafischen Entwicklungsumgebung zusammengefasst. Visual C++ ist seither ein Bestandteil von Visual Studio.

Verfügbarkeit

Bearbeiten

Alle Visual Studio Professional und Visual Studio Enterprise Produkte enthalten seit ihrer Einführung eine vollständige Visual C++ Umgebung mit allen Plattform-Toolsets und den aktuellen Bibliotheksversionen von MFC, ATL und weiteren Programmierschnittstellen für den Unternehmensbereich.[2]

Von Version 2005 bis 2010 war Visual C++ als kostenlose separate Express Edition mit eigener eingeschränkter IDE aber ohne die anderen Visual Studio Sprachen verfügbar.[3] Für weitere Sprachen wurden eigene Express-Produkte angeboten, wie z. B.: Visual C# Express, Visual Basic Express oder Visual J# Express.

Von 2012 bis 2017 existierte Visual C++ innerhalb von Visual Studio Express für Desktop neben C# und Visual Basic in einer ebenfalls eingeschränkten Umgebung.

Das separat kostenlos herunterladbare Windows Platform SDK (heute Windows SDK genannt) ist ebenfalls mit einem Visual C++ Compiler ausgestattet, dem jedoch eine grafische Entwicklungsumgebung fehlt.

Ab 2013 starteten mit Visual Studio Community und den Build Tools für Visual Studio zwei weitere Produktserien, die Visual C++ bereitstellen. Die Community Edition löste die Express Editionen als kostenlose grafische Umgebungen ab, während die Build Tools nur die Compiler Toolsets ohne grafische Werkzeuge installierten um für automatische Build-Prozesse eingesetzt zu werden, wie z. B.: in Docker Containern.

Die aktuelle Version von Visual C++ ist Bestandteil der Entwicklungsumgebung Microsoft Visual Studio 2022. Sie ist in den kostenpflichtigen Varianten Professional, Enterprise und Test Professional erhältlich und kostenfrei als Community Edition oder über die Build Tools für Visual Studio beziehbar.[4]

Vermarktung

Bearbeiten

Aus Marketinggründen trugen die Versionen 2002 und 2003 das Kürzel .NET als Zusatz im Namen. 2005 kam Microsoft von diesem Benennungsschema wieder ab.

Die kostenpflichtigen Professional und Enterprise Editionen von Visual Studio richten sich an professionelle Entwickler und Unternehmen für die Herstellung von kommerzieller Software. Sie enthalten zahlreiche Vorlagen für verschiedene Visual C++ basierte Projekte und sind durch Plugins beliebig erweiterbar. Bei Problemen können Entwickler den technischen Support von Microsoft in Anspruch nehmen.[5]

Die kostenlosen Visual C++ Express Editionen waren für den Einstieg in die Programmierung und kleine Projekte vorgesehen. Deren Entwicklungsumgebungen waren stark eingeschränkt und die installierten Compiler Toolsets deckten weniger Plattformen als die kostenpflichtigen Varianten ab (z. B.: anfangs nur Win32, später zusätzlich Win64). Auch fehlten Bibliotheken für die WinAPI Anbindung oder MFC und ATL. Diese wurden jedoch in späteren Editionen teilweise ergänzt. Der Einsatz von Express Editionen für die Schaffung kommerzielle Produkte ist nicht untersagt.[6] Ein Umstieg von den Express zu den Professional und Enterprise Editionen war jederzeit möglich, da kompatible Dateiformate benutzt wurden.

Mit Visual Studio Community wurde ein Großteil aller vorher nur kostenpflichtig erhältlichen Funktionen freigegeben. Die Community Lizenz gestattet die Arbeit an privaten, gemeinnützigen und Open-Source-Projekten, schließt aber die kommerzielle Nutzung in Unternehmen ab einem bestimmten Umsatz aus.[7] Die somit freie Verfügbarkeit von Visual C++ trug zur Verbreitung des Compiler bei ohne das Geschäftsmodell der kostenpflichtigen Produkte zu beeinträchtigen.

Versionsgeschichte

Bearbeiten

Die Version 1.0 von Visual C++ erschien 1993 für Windows 3.1. Sie war als Nachfolger von Microsoft C/C++ für DOS vorgesehen. Version 2.0 von 1994 sollte als erste reine 32-Bit-Version den Umstieg auf Windows 9x vorbereiten. Version 4.0 führte die neue Integrierte Entwicklungsumgebung Developer Studio ein.

Die Versionen ab 2002 sind in der Lage, außer der MFC noch auf .NET basierende Projekte zu erstellen. Die ursprünglich „Managed C++“ genannten Spracherweiterungen wurden stark überarbeitet und stehen ab Version 2005 von Visual C++ als C++/CLI zur Verfügung.

Seit 2012 ist die Entwicklung von Window Store Apps möglich, die nicht auf dem Win32-API, sondern auf der neuen Windows Runtime Schnittstelle aufbauen. Ab 2015 werden alle neuen API Modelle durch die Universal Windows Platform zusammengefasst, die ebenfalls durch Visual C++ programmiert werden kann. Eine Spracherweiterung namens C++/CX ermöglicht hierbei den einfachen Zugang zu Windows Runtime Funktionen. Alternativ kann über die Windows Runtime C++ Template Library (WRL) mit Standard-C++ ebenso auf die Windows Runtime Umgebung zugegriffen werden.

Seit Version 2022 werden nur noch 64-bit Versionen von Visual Studio veröffentlicht. Neu hinzugekommen ist die native Unterstützung von ARM64 als Hostplattform für Visual Studio unter Windows 11, in der nativer C++ Code auf ARM64 Hardware entwickelt und ausgeführt werden kann. (Debugging von ARM32 und ARM64 Code war zuvor nur per Remote-Debugger von einem x86-Studio aus möglich). Mit dem zusätzlichen ARM64EC Binärstandard ab Visual Studio 2022 17.4 steht eine Brückentechnologie zwischen x86-64 und ARM64 bereit, die der Softwaremigration von X86 hin zur ARM Plattform dienen soll.[8]

Compiler Versionierung

Bearbeiten

Die Visual C++ Versionierung liegt in bis zu 3 unterschiedlichen Varianten vor[9]:

  • Version der Visual Studio Produktserie, in der der Compiler enthalten ist. Sie ist seit dem Jahr 2002 dem Jahr der Veröffentlichung angenähert (z. B.: Visual Studio / Visual C++ 2003)
  • Versionsnummer des Compilers, die als Haupt- und Nebenversion hochgezählt wird (z. B.: MSVC-7.1)
  • _MSC_VER Versionsmakro als hochgezählte Ganzzahl, die innerhalb von C/C++ Codes benutzt werden kann, um den Compiler zu erkennen und neue Funktionen einzubinden. Visual C++ 1.0 beginnt bei _MSC_VER 800 als Nachfolger von Microsoft C/C++ 7.0 mit einer _MSC_VER von 700.
Titel Version _MSC_VER Datum Neue Funktionen
Visual C++ 1.0 1.0 800 Februar 1993 erste Version, für Microsoft Windows 3.1, in der Professional-Version auch für DOS. Die Standard-Version ersetzte QuickC for Windows 1.0. Die Professional-Version ersetzte Microsoft C/C++ 7.0.
Visual C++ 1.0 32-Bit-Edition 1.0 800 August 1993 für Microsoft Windows NT 3.1, nur für x86
Visual C++ 1.5 1.5 Dezember 1993[10][11] letzte Version, die selber unter Microsoft Windows 3.1 lauffähig ist und 16-bit-Programme erzeugen kann
Visual C++ 2.0 2.0 900 Oktober 1994[12] für Microsoft Windows NT 3.5 (unterstützt x86, MIPS und Alpha-Prozessoren), MFC 3.0, unterstützt Windows 3.x nur noch via Win32s, erste Version für Macintosh (nur Motorola-68000-Prozessoren)
Visual C++ 4.0 4.0 1000 September 1995[13] für Microsoft Windows NT 3.51 und erstmals Microsoft Windows 95, MFC 4.0, neue Integrierte Entwicklungsumgebung Developer Studio, erste Version für PowerPC-Prozessoren, enthielt auch eine CD mit Visual C++ 1.52 für 16-bit-Rückwärtskompatibilität. Die Standard-Version enthält vergleichbar zu QuickC keinen optimierenden Compiler.[14]
Visual C++ 4.1 4.1 1010 für Microsoft Windows NT 3.51 und Microsoft Windows 95, erste Version mit Microsoft Game SDK (später umbenannt in DirectX), letzte Version mit Unterstützung für MIPS-Prozessoren und Win32s, nur als Update für MSDN-Abonnenten erhältlich gewesen
Visual C++ 4.2 4.2 1020 September 1996 für Microsoft Windows NT 4.0 und Microsoft Windows 95, MFC 4.2 mit Unterstützung für ActiveX, letzte Version mit Unterstützung für Macintosh und für PowerPC-Prozessoren
Visual C++ 5.0 5.0 1100 April 1997[15] für Microsoft Windows NT 4.0 und Microsoft Windows 95, modernisierte Entwicklungsumgebung, MFC 4.21
Visual C++ 6.0 6.0 1200 Dezember 1998 für Microsoft Windows NT 4.0 und Microsoft Windows 98 sowie das kommende Windows 2000, MFC 6.0, letzte Version für Alpha-Prozessoren
Visual C++ .NET 2002 7.0 1300 2002 für Microsoft Windows XP, erstmalige Unterstützung für .NET-Projekte (1.0), Managed C++
Visual C++ .NET 2003 7.1 1310 2003 Verbesserte C++03 Unterstützung, .NET 1.1
Visual C++ 2005 8.0 1400 November 2005 C++/CLI, .NET 2.0
Visual C++ 2008 9.0 1500 November 2007 für Microsoft Windows Vista, .NET 3.5, SP1 beinhaltet TR1 (Vorschau auf C++11 Bibiliotheksfunktionen)[16]
Visual C++ 2010 10.0 1600 April 2010 für Microsoft Windows 7, .NET 4.0, teilweise C++11 Unterstützung, verbessertes C++ Parsing für IntelliSense[17]
Visual C++ 2012 11.0 1700 April 2012 für Microsoft Windows 8, .NET 4.5, App-Store Unterstützung, verbesserte C++11 Unterstützung[18]
Visual C++ 2013 12.0 1800 Oktober 2013 für Microsoft Windows 8.1, .NET 4.5.1, erstmals C99 Unterstützung[19], weiter verbesserte C++11 Unterstützung[20]
Visual C++ 2015 14.00 1900 Juli 2015 für Microsoft Windows 10, Android und iOS als Zielplattformen, C++14 Unterstützung, einige C++17 Features[21]
Visual C++ 2017 14.10 1910 März 2017 für Microsoft Windows 10, .NET Core, C++17 Unterstützung, teilweise C11 Unterstützung[22]
Visual C++ 2019 14.20 1920 April 2019 für Microsoft Windows 10, teilweise C++20 Unterstützung, CMake Integration[23], teilweise C11 und C17 Unterstützung[24]
Visual C++ 2022 14.30 1930 November 2021 für Microsoft Windows 11, erstmals nur für 64-bit Hosts verfügbar, mit Version 17.4 wurde die erste native ARM64 Variante für Windows 11 ARM64 veröffentlicht.[25]

Ab Visual Studio 2015 v14.0 wird das Visual C++ Compiler-Toolset im Verhältnis zur Visual Studio Version unterschiedlich hochgezählt. Während die Studio Hauptversion erhöht wird und die Nebenversion Updates abbildet, ist die Hauptversion des C++ Toolsets aktuell auf 14 festgesetzt und die Nebenversion bildet in Zehnerschritten die Hauptversion des Studio Produktes ab.

Eine neuere Version von Visual Studio kann mit älteren Versionen des Toolsets betrieben werden.

Beispiel: Studio 2022 v17 Projekt kompiliert mit Toolset 14.10 (von Studio 2017 v15).

Titel Studio Version C++ Toolset Version _MSC_VER
Visual Studio 2015 14.x 14.0x >= 1900
Visual Studio 2017 15.x 14.1x >= 1910
Visual Studio 2019 16.x 14.2x >= 1920
Visual Studio 2022 <=17.9.x 14.3x >= 1930
Visual Studio 2022 >=17.10.x 14.4x >= 1940

C und C++ Standard Unterstützung

Bearbeiten

Die vollständige Unterstützung der einzelnen C++ Standards ist nicht eindeutig an die Jahreszahlen der Produktveröffentlichungen von Visual C++ gebunden.

Eine Visual C++ Compilerversion kann bereits Entwürfe von Funktionen beinhalten, die erst später in einem C++ Standard veröffentlicht werden (z. B.: VC++ 2010 enthielt bereits einige C++11 Features). Parallel dazu werden manche Funktionen erst spät (teilweise erst nach vielen Jahren) oder gar nicht implementiert.[26]

Visual C++ unterstützte bis zur Version 2012 (v11) nur den originalen C90 Standard, wodurch viele modernere C-Projekte (Dateiendung .c) nicht übersetzt werden konnten. Mit Visual C++ 2013 (v12) kam erstmals C99 Support hinzu und seit Visual C++ 2017 (v14.1) wird schrittweise der C11 und C17 Support ausgebaut.

Unterstützte C++ Zielplattformen

Bearbeiten
  • Windows Desktop Apps und Konsolendienste (x86-32, x86-64, ARM-32, ARM-64)
  • Windows Universal Apps (x86-32, x86-64, ARM-32, ARM-64)
  • Windows Driver (x86-32, x86-64, ARM-32, ARM-64)
  • Windows CE (x86, ARM und weitere)[27]
  • .NET CLI (Unmanaged-, Pure- und Safe-Mode)
  • Microsoft-POSIX (Optionale Unix Dienste ab Windows NT 4, nur bis einschließlich Windows 8 verfügbar)
  • UEFI ROM, Runtime, Boot, Applications (x86-32, x86-64, ARM-32, ARM-64)
  • Android (Visual Studio Cross-Platform Module auf x86 und ARM-32, ARM-64)[28]
  • iOS (Visual Studio Cross-Platform Module)

Literatur

Bearbeiten
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Source Links Archive: Microsoft Visual C++ 2015–2022 Redistributables – v14. GitHub, 13. August 2024, abgerufen am 22. September 2024.
  2. Tyler Whitney et al.: C++ Tools and Features in Visual Studio Editions. Abgerufen am 14. Dezember 2022 (amerikanisches Englisch).
  3. Windows- und Konsolenanwendungen mit MS Visual C++. Abgerufen am 14. Dezember 2022.
  4. Die unterschiedlichen Versionen von Visual Studio
  5. MICROSOFT VISUAL STUDIO ENTERPRISE 2017, VISUAL STUDIO PROFESSIONAL 2017, VISUAL STUDIO TEST PROFESSIONAL 2017 UND TESTVERSION. Abgerufen am 14. Dezember 2022 (deutsch).
  6. MICROSOFT-SOFTWARE-LIZENZBESTIMMUNGEN MICROSOFT VISUAL STUDIO 2017 EXPRESS FÜR WINDOWS DESKTOP. Abgerufen am 14. Dezember 2022 (deutsch).
  7. MICROSOFT VISUAL STUDIO COMMUNITY 2017. Abgerufen am 14. Dezember 2022 (deutsch).
  8. Marc Sweetgall et al.: Arm64EC for Windows 11 apps on Arm. Abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  9. List of _MSC_VER and _MSC_FULL_VER. Abgerufen am 14. Dezember 2022 (englisch).
  10. "Visual C++ 1.5 Beta" umfangreicher Vorabtest in der PC Professionell 2/94 S. 15
  11. "Die Programm-Macher" Testvergleich mit anderen Compilern in der PC Professionell 1/95 S. 136
  12. "Visual C++ 2.0 Beta" umfangreicher Vorabtest in der PC Professionell 9/94 S. 26
  13. "C/C++-COMPILER FÜR WINDOWS Programmiermaschinen" Vergleich mehrerer Compiler in der PC Professionell 9/96 S. 146
  14. http://www.malsmith.net/blog/visual-c-visual-history/ A visual history of Visual C++
  15. "MICROSOFT VISUAL C++ 5.0 Entwickeln fürs Netz" PC Professionell 5/97 S. 66
  16. Visual CPP Team: Visual C++ 2008 Feature Pack Released! 7. April 2008, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  17. Visual CPP Team: Visual Studio 2010 is Now Available. 13. April 2010, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  18. Visual Studio Blog: Visual Studio 2012 RC Available Now! 31. Mai 2012, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  19. Pat Brenner: C99 library support in Visual Studio 2013. 19. Juli 2013, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  20. Eric Battalio: Visual Studio 2013 Available Now! 17. Oktober 2013, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  21. Eric Battalio: Visual Studio 2015 Preview is Now Available. 12. November 2014, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  22. Julia Liuson: Announcing Visual Studio 2017 General Availability... and more. 7. März 2017, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  23. Angel Zhou: Visual Studio 2019 Preview 2 is now available. 24. Januar 2019, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  24. Elnar Dakeshov: C11 and C17 Standard Support Arriving in MSVC. 14. September 2020, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  25. Mark Downie: Arm64 Visual Studio is officially here! 8. November 2022, abgerufen am 7. Dezember 2022 (amerikanisches Englisch).
  26. Colin Robertson et al.: Microsoft C/C++-Sprachkonformität. Abgerufen am 7. Dezember 2022 (deutsch).
  27. Visual Studio compatibility with Win CE 5/6/7 Platform. Abgerufen am 7. Dezember 2022.
  28. Android Development | Visual Studio. Abgerufen am 7. Dezember 2022 (amerikanisches Englisch).