Neuerungen bei C++ in Visual Studio 2022
Visual Studio 2022 enthält viele Updates und Fixes für die C++-Compiler und -Tools von Microsoft. Die Visual Studio-IDE bietet auch erhebliche Leistungs- und Produktivitätsverbesserungen und wird jetzt nativ als 64-Bit-App ausgeführt.
- Weitere Informationen zu Neuerungen in Visual Studio finden Sie unter Neuerungen in Visual Studio 2022.
- Weitere Informationen zu den Neuerungen in der C++-Dokumentation finden Sie unter Microsoft C++-Dokumentation: Neuigkeiten.
- Informationen zu Versionsbuilddaten finden Sie im Versionsverlauf von Visual Studio 2022.
Neuerungen für C++ in Visual Studio, Version 17.11
Veröffentlicht august 2024
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++-Entwickler in Visual Studio 2022 17.11 |
Standardbibliothek (STL): Zusammenführung von C++26- und C++23-Funktionen, C++20-Fehlerberichten, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL Changelog 17.11 |
Neue Features in der Visual Studio 17.11-IDE | Versionshinweise zu Visual Studio 2022, Version 17.11 |
Verbesserungen bei der C++-Sprachkonformität in Visual Studio 2022 17.11 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.11 |
Eine partielle Liste der neuen Features:
Standardbibliothekserweiterungen:
- Die formatierte Ausgabeimplementierung enthält
std::range_formatter
jetzt Und Formatierer fürstd::pair
undstd::tuple
. - Unterstützung
std::println()
ohne Argumente hinzugefügt. Dadurch wird eine leere Zeile gedruckt, wie in P3142R0 vorgeschlagen. - Verbesserte Vektorisierung für mehrere Algorithmen, einschließlich
replace_copy()
,replace_copy_if()
, ,find_first_of()
ranges::replace_copy
ranges::replace_copy_if
undranges::find_first_of
, für 8-Bit- und 16-Bit-Elemente,mismatch()
, ,ranges::mismatch
,count()
ranges::count
,find()
,ranges::find_last
ranges::find
undranges::iota
.
- Die formatierte Ausgabeimplementierung enthält
Spieleentwicklung in C++
- Sie können jetzt allgemeine Unreal Engine-Klassenvorlagen, -Module und -Plug-Ins aus Visual Studio hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Unreal Engine-Klassen, Modulen und Plug-Ins in Visual Studio.
- Die neue Unreal Engine-Symbolleiste bietet schnellen Zugriff auf aktionen im Zusammenhang mit dem Unreal Engine in Visual Studio. Mit der Symbolleiste können Sie schnell an Unreal Engine-Prozesse anfügen, den Blueprints-Cache erneut scannen, schnell auf das Unreal Engine Log zugreifen und schnell auf die Unreal Engine Configuration Page für Visual Studio zugreifen. Weitere Informationen finden Sie unter Unreal Engine Toolbar.
- Sie können jetzt Ablaufverfolgungsergebnisse nach Projekt filtern. Außerdem zeigen die Ergebnisse in jeder Zeile den relativen Pfad und Dateinamen anstelle des vollständigen Pfads an. Die Ergebnisgruppierung in der Ansicht "Eingeschlossene Dateien " wurde ebenfalls verbessert:
Die Ansicht "Enthaltene Dateien" verfügt über eine neue Spalte für das Projekt. Die Spalte "Projekt" ist ausgewählt, und Projekte wie (Select All), CompilerIdC, OpenAL, common usw. werden ausgewählt. Die enthaltenen Dateien werden nach relativem Pfad und Dateinamen aufgelistet und gruppiert.
CMake-Debugging
- Sie können nun Ihre CMake-Skripts und
CMakeLists.txt
Dateien im Visual Studio-Debugger für CMake-Projekte debuggen, die linux über Windows-Subsystem für Linux (WSL) oder SSH als Ziel verwenden. Um eine CMake-Debugsitzung in Visual Studio zu starten, legen Sie einen Haltepunkt in IhrerCMakeLists.txt
Datei fest, und navigieren Sie dann zum Project>Configure Cache with CMake Debugging.
- Sie können nun Ihre CMake-Skripts und
Copilot
- Wenn Sie im Code-Editor auf Symbole zeigen, klicken Sie im Dialogfeld "Schnellinfo" auf die Schaltfläche "Weitere Informationen", um mehr über ein bestimmtes Symbol zu erfahren:
Das QuickInfo-Fenster wird oberhalb einer Funktion angezeigt. Der Link "Weitere Informationen" ist hervorgehoben.
- GitHub Copilot kann Benennungsvorschläge für Ihre Bezeichner (Variablen, Methoden oder Klassen) basierend auf der Verwendung Ihres Bezeichners und dem Stil Ihres Codes generieren.
Das Dialogfeld "Umbenennen" enthält ein Feld "Neuer Name" mit einer Dropdownliste, in der die folgenden Optionen angezeigt werden: text_color, font_color, display_color, console_color und menu_text_color.
Sie benötigen ein aktives GitHub Copilot-Abonnement. Klicken Sie mit der rechten Maustaste auf die Variable, die Sie umbenennen möchten, und wählen Sie "Umbenennen" (
Ctrl+R
,Ctrl+R
). Wählen Sie das GitHub Copilot Sparkle-Symbol aus, um Benennungsvorschläge zu generieren.Debuggen
- Bedingte Haltepunkte in C++ sind wesentlich schneller.
Verbesserungen bei der Diagnose
- Verbesserte Diagnose beim Aufrufen
std::get<T>
einer Instanzstd::tuple
mitT
mehreren Instanzen in ihren Vorlagenargumenten. MSVC, das zum Melden verwendet wird:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Jetzt meldet es:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Verbesserte Diagnose, wenn
std::ranges::to
das angeforderte Ergebnis nicht erstellt werden kann. MSVC, das zum Melden verwendet wird:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Jetzt meldet es:
error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'
- Verbesserte Diagnose beim Aufrufen
Neuerungen bei C++ in Visual Studio, Version 17.10
Veröffentlicht im Mai 2024
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++-Entwickler in Visual Studio 2022 17.10 |
Standardbibliothek (STL): Zusammenführung von C++26- und C++23-Funktionen, C++20-Fehlerberichten, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.10 |
Neue Features in der Visual Studio 17.10-IDE | Visual Studio 2022, Version 17.10: Versionshinweise |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.10 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10 |
Eine partielle Liste der neuen Features:
- MSVC Toolset Update: Die MSVC Toolset-Version wird von 19.39 auf 19.40 aktualisiert. Dies kann Auswirkungen auf Projekte mit Versionsannahmen haben. Weitere Informationen darüber, wie sich dies auf Projekte auswirkt, die davon ausgehen, dass für Visual Studio 2022 alle MSVC-Versionen 19.3X sind, finden Sie unter MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
- Standardbibliothekserweiterungen: Die Standardbibliothek hat Unterstützung für P2510R3 Formatierungspunkte hinzugefügt, die den Satz von Formatbezeichnern für Zeiger bietet, wenn
std::format
mehr in Übereinstimmung mit denen verwendet wird, die bereits für ganze Zahlen vorhanden sind. Die vektorisierten Implementierungen vonstd::min_element
,std::ranges::min
, und Freunden wurden verbessert. - Build Insights: Bietet jetzt Informationen zur Instanziierung von Vorlagen. Weitere Informationen finden Sie in der Ansicht Vorlagen für Build Insights in Visual Studio oder in der Aufzeichnung Pure Virtual C++-Vorlagen für Build Insights in der Visual Studio.
- Unreal Engine Plugin: Es gibt eine neue Opt-In-Funktion für das Unreal Engine Plug-In, das im Hintergrund ausgeführt werden soll, wodurch die Startkosten reduziert werden. Dies ist ein Opt-In-Feature, das über Tools>Optionen>Unreal Engine aktiviert wird.
- Neue Features für Linux: Siehe neue Linux-Entwicklungsfeatures in Visual Studio.
- CMake-Ziele: Sie können jetzt Ziele in der CMake-Zielansicht anheften.
- Verbindungs-Manager-UX: Die Benutzeroberfläche bietet eine nahtlosere Benutzererfahrung beim Herstellen einer Verbindung mit Remotesystemen. Weitere Informationen finden Sie unter Verbesserungen der Benutzerfreundlichkeit im Visual Studio-Verbindungs-Manager.
- Pull Request-Kommentare: Sie können jetzt GitHub- und Azure DevOps-Kommentare direkt in Ihrer Arbeitsdatei anzeigen. Aktivieren Sie das Featureflag, Pull Request-Kommentare unter Optionen>Umgebung>Vorschaufeatures und checken Sie den Pull Request-Branch aus, um zu beginnen.
- KI-generierter Inhalt: GitHub Copilot kann jetzt Pull Request-Beschreibungen entwerfen. Erfordert ein aktives GitHub Copilot-Abonnement. Probieren Sie die Funktion aus, indem Sie das funkelnde Stiftsymbol KI-generierte Pull Request-Beschreibung hinzufügen im Fenster Pull Request erstellen auswählen.
- Bildvorschau: Zeigen Sie mit der Maus auf einen Bildpfad, um eine Vorschau mit Größendetails anzuzeigen. Die Größe ist auf 500 px breit und hoch begrenzt.
Die Maus bewegt sich über die Zeile std::filesystem::path vs_logo_path = "../images/vs_logo.png". Darunter wird eine Vorschau des Visual Studio-Logos und die Informationen angezeigt, die 251 x 500 Pixel und 13,65 KB groß sind.
- Breakpoint/Tracepoint-Erstellung: Sie können jetzt bedingte Breakpoints oder Tracepoints direkt aus Ausdrücken im Quellcode über das Rechtsklickmenü erstellen. Dies funktioniert für Eigenschafts- oder Feldnamen und -werte von autos, locals, watch windows oder DataTips.
- Dialogfeld „An Prozess anheften“: Die vom Dialogfeld „An Prozess anheften“ bereitgestellte Funktionalität ist benutzerfreundlicher. Sie können jetzt ganz einfach zwischen Struktur- und Listenansichten wechseln, Prozesse besser mit reduzierbaren Abschnitten organisieren und Codetypen mit einem vereinfachten Kombinationsfeld auswählen. Außerdem ist das Feature „Fenster auswählen/nachverfolgen“ jetzt einfacher zu verwenden, indem die bidirektionale Nachverfolgung, das Auswählen eines Prozesses das Fenster hervorhebt und das Klicken auf ein Fenster den Prozess auswählt.
- GitHub Copilot Integration: GitHub Copilot und Copilot Chat-Erweiterungen sind jetzt vereinheitlicht und werden jetzt direkt in Visual Studio ausgeliefert. Um sie zu installieren, installieren Sie die GitHub Copilot-Komponente im Visual Studio-Installer:
Die GitHub Copilot-Schnittstelle befindet sich in der oberen rechten Ecke von Visual Studio. Um sie zu verwenden, benötigen Sie ein aktives GitHub Copilot-Abonnement.
Die GitHub Copilot-Schaltfläche wird in der oberen rechten Ecke von Visual Studio angezeigt. Sie verfügt über Optionen zum Öffnen eines Chatfensters, den GitHub Copilot-Einstellungen, weitere Informationen und zum Verwalten des Copilot-Abonnements.
Neuerungen bei C++ in Visual Studio, Version 17.9
Veröffentlicht im Februar 2024
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++-Entwickler in Visual Studio 2022 17.9 |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, Leistungsverbesserungen, verbessertem Verhalten, LWG-Problemlösungen und behobenen Fehlern | STL-Änderungsprotokoll 17.9 |
Neue Features in der Visual Studio 17.9-IDE | Visual Studio 2022, Version 17.9: Versionshinweise |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.9 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Zusammenfassung von C++-Back-End-Updates | MSVC-Back-End-Updates seit Visual Studio 2022, Version 17.3 |
Eine partielle Liste der neuen Features:
#include
-Diagnose, die eine detaillierte Analyse Ihrer#include
-Direktiven bereitstellt. Aktivieren Sie dieses Feature, indem Sie mit der rechten Maustaste auf eine#include
-Richtlinie klicken und #include-Direktiven>Aktivieren von #include-Direktivendiagnose auswählen. Über jedem#include
befindet sich die Häufigkeit, mit der Ihr Code auf diese#include
-Datei verweist. Wählen Sie den Verweislink aus, um zu der Stelle zu navigieren, an der Ihr Code etwas aus dieser Headerdatei verwendet. Um die Buildzeit Ihrer#include
-Direktiven anzuzeigen, führen Sie Build Insights aus, indem Sie zu Build>Build Insights für Solution>Build navigieren.Oberhalb des #include ist ein **reference**-Link und viele der Verweise auf diese #include-Datei (in diesem Fall 1). Die Buildzeit wird ebenfalls aufgeführt (in diesem Fall weniger als 1/2 Sekunde).
- Visualisierung des Speicherlayouts, die zeigt, wie der Speicher für Ihre Klassen, Strukturen und Unions angeordnet ist. Bewegen Sie den Mauszeiger über einen Typ und wählen Sie den Link Speicherlayout in der QuickInfo, um ein spezielles Fenster zu öffnen, das das Speicherlayout des ausgewählten Typs anzeigt. Wenn Sie auf einzelne Datentypen in diesem Fenster zeigen, erhalten Sie detaillierte Informationen über ihre Größe und den Offset innerhalb des Typs.
Das Speicherlayoutfenster zeigt den Inhalt der Snake-Klasse an. Es zeigt die Speicherversätze der verschiedenen Felder der Klasse, z. B. Point-Klassen für die Position des Kopfes und des Körpers, den Punktestand usw.
- Sie können jetzt ihre eigene benutzerdefinierte ausführbare CMake-Datei angeben. Dieses Feature ist nützlich, wenn Sie eine bestimmte Version von CMake verwenden möchten, die nicht mit Visual Studio bereitgestellt wird. Navigieren Sie zu Tools>Optionen, und wählen Sie CMake>Allgemein aus. Wählen Sie Benutzerdefinierte ausführbare CMake-Datei aktivieren aus, und geben Sie den Verzeichnispfad Ihrer ausführbaren CMake-Datei an.
Das Dialogfeld „CMake-Optionen“ in dem die Option „Benutzerdefiniertes ausführbares CMake-Verzeichnis aktivieren“ und das Feld „Ausführbares CMake-Verzeichnis“ hervorgehoben sind.
- Verbessertes IntelliSense für Unreal Engine-Projekte
- Verbesserte C++23-Unterstützung:
std::format
undstd::span
formattable
,range_format
,format_kind
, undset_debug_format()
als Teil der P2286R8-Formatierungsbereiche<mdspan>
per P0009R18 und nachfolgenden Wortänderungen, die auf den C++23-Standard angewendet wurden. Außerdem kannformat()
Zeiger per P2510R3 formatieren.
Neuerungen bei C++ in Visual Studio, Version 17.8
Veröffentlicht im November 2023
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++-Entwickler in Visual Studio 2022 17.8 |
Standardbibliothek (STL): Zusammenführung von C++26-, C++23-Funktionen, C++20-Erweiterungen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.8 |
Neue Features in der Visual Studio 17.8-IDE | Visual Studio 2022, Version 17.8: Versionshinweise |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.8 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine Übersicht über C++-Verbesserungen in Visual Studio, VS Code und vcpkg während 2023 | Ein Jahr mit C++-Verbesserungen |
Eine partielle Liste der neuen Features:
- C++ strukturierte Diagnose im Ausgabefenster und ein neues Fenster mit Problemdetails, das weitere Informationen zum Fehler bereitstellt. Weitere Informationen finden Sie unter Strukturierte SARIF-Ausgabe und Fenster „Problemdetails“.
- Ein Feature, mit dem Sie die Größe und Ausrichtung Ihrer Klassen, Strukturen, Vereinigungen, Basistypen oder Enumerationen sogar vor der Kompilierung des Codes visualisieren können. Wenn Sie mit der Maus auf den Bezeichner zeigen, wird ein QuickInfo mit Informationen zur Größe und Ausrichtung angezeigt.
- Ein Feature, das vorschlägt, wann Memberfunktionen
const
markiert werden sollen, weil sie den Status des Objekts nicht ändern. Zeigen Sie auf eine Memberfunktion, und klicken Sie auf das Glühbirnensymbol, um die Funktion alsconst
zu markieren. - Visual Studio fordert Sie jetzt auf, globale Funktionen über ein Schraubenziehersymbol, das neben dem Funktionsnamen angezeigt wird, als statisch zu markieren. Klicken Sie auf das Schraubenziehersymbol, um die Funktion als statisch zu markieren.
- Nicht verwendete #include-Anweisungen werden im Editor abgeblendet. Sie können mit dem Mauszeiger auf eine abgeblendete include-Anweisung zeigen und das Glühbirnenmenü verwenden, um die betreffende include-Anweisung oder alle nicht verwendeten include-Anweisungen zu entfernen. Sie können auch
#include
-Anweisungen für Entitäten hinzufügen, die indirekt über andere Header eingebunden werden. Weitere Informationen finden Sie unter Bereinigen von include-Anweisungen in C/C++ in Visual Studio. - Weitere Unreal Engine-Unterstützung:
- Mit dem Unreal Engine Test Adapter können Sie Ihre Unreal Engine-Tests ermitteln, ausführen, verwalten und debuggen, ohne die IDE von Visual Studio verlassen zu müssen.
- In den Unreal Engine-Codeschnipseln finden Sie allgemeine Unreal Engine-Konstrukte als Codeschnipsel in Ihrer Memberliste.
- Build Insights ist jetzt in Visual Studio 2022 integriert und funktioniert mit MSBuild- und CMake-Projekten, die MSVC verwenden. Sie können nun zusätzliche Informationen zur Kompilierung einer Funktion anzeigen, z. B. wie lange das Kompilieren dauerte und die Anzahl der ForceInlines und die Auswirkungen von Headerdateien auf die Buildzeit. Weitere Informationen finden Sie im Tutorial: Problembehandlung von Funktions-Inlining auf die Buildzeit und im Tutorial: Problembehandlung der Auswirkungen von Header-Dateien auf die Buildzeit.
- Mit der Remote-Linux-Komponententestunterstützung können Sie jetzt Ihre CTest- und GTest-Tests genau wie Ihre lokalen Tests auf Ihren Remote-Linux-Computern aus dem Test-Explorer von Visual Studio ausführen.
Neuerungen bei C++ in Visual Studio, Version 17.7
Veröffentlicht im August 2023
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++-Entwickler in Visual Studio 2022 17.7 |
Neue C++-Features speziell für die Spieleentwicklung | Entfesseln der Leistungsfähigkeit von Visual Studio 2022 für die C++-Spieleentwicklung |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.7 |
Neue Features in der Visual Studio 17.7-IDE | Visual Studio 2022, Version 17.7: Versionshinweise |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.7 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine partielle Liste der neuen Features:
- Schnellere Debugsitzungen und schnellere Projektladezeiten
- Schritt-für-Schritt-Visualisierung der Makroerweiterung
- Ein-Klick-Download für Windows-Subsystem für Linux (WSL)
- Verbesserter Support für Doxygen-Kommentare
- C++ Build Insights für die Spieleentwicklung
- Für den C-Compiler wurde
/std:clatest
hinzugefügt. - Unreal Engine-Projektverbesserungen wie schnelleres IntelliSense und Syntaxeinfärbung, die Möglichkeit, alle Unreal Engine Blueprint-Referenzen zu finden, und mehr.
Neuerungen bei C++ in Visual Studio, Version 17.6
Veröffentlicht im Mai 2023
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.6 |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.6 |
Neue Features in der Visual Studio 17.6-IDE | Versionshinweise zu Visual Studio 2022, Version 17.6 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.6 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine Partielle Liste der neuen Features:
- CMake-Skriptdebugging
- Integrierte Unterstützung für High Level Shading Language (HLSL)
- Unreal Engine-Protokollanzeige
- VCPKG wird jetzt standardmäßig hinzugefügt.
- Anfängliche Unterstützung für C++20 in C++/CLI-Projekten und einigen C++23-Standardbibliotheksfeatures für Bereiche.
Neuerungen bei C++ in Visual Studio, Version 17.5
Veröffentlicht im Februar 2023
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.5 |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.5 |
Neue Features in der Visual Studio 17.5-IDE | Versionshinweise zu Visual Studio 2022, Version 17.5 |
Eine Partielle Liste der neuen Features:
std::move
,std::forward
,std::move_if_noexcept
undstd::forward_like
erzeugen jetzt keine Funktionsaufrufe im generierten Code, auch nicht im Debugmodus. Diese Änderung vermeidet benannte Umwandlungen, was unnötigen Aufwand in Debugbuilds verursacht./permissive-
(oder eine Option, die dies impliziert, z. B./std:c++20
oderstd:c++latest
) ist erforderlich.[[msvc::intrinsic]]
wurde hinzugefügt. Sie können dieses Attribut auf nicht rekursive Funktionen anwenden, die aus einer einzelnen Umwandlung bestehen, die nur einen Parameter akzeptiert.Unterstützung für die Linux-Konsole im integrierten Terminal wurde hinzugefügt, die Terminal-E/A ermöglicht.
Anfängliche experimentelle Unterstützung für atomische C11-Grundtypen (
<stdatomic.h>
) wurde hinzugefügt. Sie können dieses experimentelle Feature mit der Option/experimental:c11atomics
im Modus/std:c11
oder höher aktivieren.Der Lebensdauerüberprüfung wurden neue experimentelle Überprüfungen mit hoher Konfidenz hinzugefügt, um Stördaten zu reduzieren.
Eine neue Previewfunktion, der Remotedatei-Explorer, ermöglicht es Ihnen, das Dateiverzeichnis auf Ihren Remotecomputern innerhalb von VS anzuzeigen und Dateien darin hoch- und herunterzuladen.
Die Versionsverwaltung der ausführbaren CMake-Dateien wurde mit Visual Studio an Kitware-Versionen angepasst.
Unterstützung für Hot Reload zur CMake-Projektvorlage wurde hinzugefügt.
„Gehe zu Definition“ für C++ verwendet jetzt einen subtileren Indikator für den Vorgang, der mehr Zeit in Anspruch nimmt und das modale Dialogfeld aus früheren Versionen ersetzt.
Der Rollout eines Experiments wurde begonnen, das weitere intelligente Ergebnisse in der C++-Autovervollständigung und der Memberliste bereitstellt. Diese Funktionalität wurde zuvor als „Predictive IntelliSense“ bezeichnet, verwendet aber jetzt eine neue Präsentationsmethode.
Wir versenden nun ein natives Arm64 Clang-Toolset mit unserer LLVM-Workload, sodass die native Kompilierung auf Arm64-Computern möglich ist.
Die Lokalisierung wurde zur Image Watch-Erweiterung hinzugefügt (Diese Erweiterung ist im Marketplace verfügbar und wird nicht über den Visual Studio-Installer gebündelt).
Es wurde Unterstützung für das Öffnen eines Terminalfensters im derzeit ausgeführten Entwicklercontainer hinzugefügt.
Es wurden mehrere Verbesserungen an der IntelliSense-Makroerweiterung vorgenommen. Insbesondere haben wir die rekursive Erweiterung in weiteren Kontexten aktiviert und dem Popupfenster Optionen hinzugefügt, um die Erweiterung in die Zwischenablage zu kopieren oder das Makro inline zu erweitern.
Die gleichzeitige Überwachung wird jetzt im seriellen Monitor unterstützt. Die gleichzeitige Überwachung ermöglicht es Ihnen, mehrere Ports gleichzeitig nebeneinander zu überwachen. Drücken Sie die Plustaste, um einen anderen seriellen Monitor zu öffnen und loszulegen.
Sie können jetzt Eigenschaften von Basisklassen anzeigen, die in einer Unreal Blueprint-Ressource geändert wurden, ohne Visual Studio zu verlassen. Doppelklicken Sie auf einen Blueprint-Verweis für eine C++-Klasse oder -Eigenschaft, um die UE-Ressourcenprüfung in Visual Studio zu öffnen.
Die Ausführung von DevContainers wurde auf einem Linux-Remotecomputer aktiviert.
Die Auswahl mehrerer Ziele zum Erstellen in der CMake-Zielansicht wurde aktiviert.
Die Unterstützung für CMakePresets.json, Version 5, wurde hinzugefügt. Informationen zu neuen Features finden Sie in der CMake-Dokumentation.
Der Test-Explorer wurde zum parallelen Erstellen und Testen mehrerer CMake-Ziele aktiviert.
Die Option „Container im Terminal öffnen“ wurde Dev Containers hinzugefügt.
Implementierte Standardbibliotheksfeatures:
Neuerungen bei C++ in Visual Studio, Version 17.4
Veröffentlicht im November 2022
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.4 |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.4 |
Neue Features in der Visual Studio 17.4-IDE | Versionshinweise zu Visual Studio 2022, Version 17.4 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.4 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine partielle Liste der neuen Features in 17.4:
Compilerfehlermeldungen wurden verbessert, um genauere und hilfreichere Informationen bereitzustellen, insbesondere für Konzepte.
Die experimentelle MSVC-Option
/experimental:log<directory>
wurde hinzugefügt, um strukturierte SARIF-Diagnosen in das angegebene Verzeichnis auszugeben.Unterstützung für C23-Attribute wurde zu IntelliSense hinzugefügt und es wurden weitere Fortschritte bei der Unterstützung von C++20-Modulen gemacht.
Die Indizierungsleistung beim Öffnen einer neuen Projektmappe wurde verbessert. Für große Projekte könnte eine Verbesserung von 20-35 % gegenüber 17.3 erreicht werden.
Verbesserte Optimierung von benannten Rückgabewerten (NRVO, Named Return Value Optimization):
- NRVO ist für Fälle aktiviert, die Ausnahmebehandlungen oder Schleifen umfassen.
- NRVO ist auch unter
/Od
aktiviert, wenn Benutzer die/Zc:nrvo
-Option oder/std:c++20
oder höher oder/permissive-
übergeben. - Sie können jetzt NRVO mit der Option
/Zc:nrvo-
deaktivieren.
Für die Version von LLVM, die mit Visual Studio ausgeliefert wird, wurde ein Upgrade auf 15.0.1 durchgeführt. In den Versionshinweisen zu LLVM und Clang finden Sie weitere Informationen zu den verfügbaren Optionen.
Für Visual Studio wurde Unterstützung für vcpkg-Artefakte mit CMake-Projekten hinzugefügt. Bei Projekten, die ein vcpkg-Manifest enthalten, wird die Umgebung beim Öffnen des Projekts automatisch aktiviert. Weitere Informationen zu diesem Feature finden Sie im Blogbeitrag zur Aktivierung der vcpkg-Umgebung in Visual Studio.
Sie können jetzt Dev-Container für Ihre C++-Projekte verwenden. Weitere Informationen zu diesem Feature finden Sie in unserem Blogbeitrag Dev-Container für C++.
IntelliSense beachtet jetzt die Reihenfolge der vorab einbezogenen Header, wenn einer davon ein PCH ist. Wenn früher ein PCH über
/Yu
verwendet und über/FI
zwangsweise einbezogen wurde, hat IntelliSense diesen immer zuerst verarbeitet, bevor andere Header über/FI
einbezogen wurden. Dieses Verhalten entspricht nicht dem Buildverhalten. Mit dieser Änderung werden/FI
-Header in der Reihenfolge verarbeitet, in der sie angegeben werden.Interne Präfixe wurden aus den CTest-Namen im Test Explorer entfernt.
Die mit Visual Studio ausgelieferte Version von CMake wurde auf Version 3.24.1 aktualisiert. Details zu den verfügbaren Features finden Sie in den Versionshinweisen zu CMake.
Android SDK-Update:
- Ant-Skripts wurden entfernt, sodass Benutzer*innen keine Ant-basierten Vorlagen mehr im Dialogfeld „Neues Projekt“ sehen werden. Hilfe bei der Migration von Ant-Vorlagen zu Gradle-Vorlagen finden Sie unter Migrating Builds From Apache Ant (Migrieren von Builds aus Apache Ant).
- Unterstützung für das Erstellen mit NDK 23 und 24 wurde hinzugefügt
- NDK-Komponente wurde auf die LTS-Version 23 aktualisiert
Vektorisierte Implementierungen von
ranges::min_element()
,ranges::max_element()
undranges::minmax_element()
wurden hinzugefügtWir verfolgen weiterhin die neuesten Entwicklungen hinsichtlich der C++-Standardisierung. Die Unterstützung für diese C++23-Features ist verfügbar, wenn Sie
/std:c++latest
in Ihren Compileroptionen einschließen:P2302R4
ranges::contains
,ranges::contains_subrange
P2499R0
string_view
-Bereichskonstruktor sollteexplicit
seinP0849R8
auto(x)
: „decay-copy“ in der Sprache(Der Compilerteil ist noch nicht implementiert; der Bibliotheksteil wurde im C++20-Modus implementiert, als die Unterstützung für Bereiche ursprünglich implementiert wurde.)
P0881R7
<stacktrace>
P2301R1
pmr
-Alias fürstd::stacktrace
hinzufügenP1328R1
constexpr type_info::operator==()
P2440R1
ranges::iota
,ranges::shift_left
,ranges::shift_right
P2441R2
views::join_with
Es wurde eine Option „Navigation nach Erstellung von Deklaration/Definition“ hinzugefügt, mit der Sie das Navigationsverhalten des Features „Deklaration/Definition erstellen“ auswählen können. Sie können zwischen dem Einsehen (Standardeinstellung) oder dem Öffnen des Dokuments bzw. keiner Navigation wählen.
Arm64-Builds von Visual Studio bündeln jetzt die Arm64-Versionen von CMake und Ninja.
Unterstützung für CMake Presets Version 4 wurde hinzugefügt. Details zu den verfügbaren Features finden Sie in den Versionshinweisen zu CMake.
Remotesystemverbindungen mit dem Verbindungs-Manager unterstützen jetzt SSH ProxyJump. ProxyJump wird verwendet, um über einen SSH-Host auf einen anderen SSH-Host zuzugreifen (z. B. auf einen Host hinter einer Firewall).
Neuerungen bei C++ in Visual Studio, Version 17.3
Veröffentlicht im August 2022
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | C++-Verbesserungen in 17.3 |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.3 |
Neue Features in der Visual Studio 17.3-IDE | Versionshinweise zu Visual Studio 2022, Version 17.3 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.3 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10 |
Eine partielle Liste der neuen Features in 17.3:
- Die Arm64EC-Toolkette wird nicht mehr als experimentell gekennzeichnet und ist bereit für die Verwendung in der Produktionsumgebung.
- Das Visual Studio-Terminal kann jetzt als SSH-Client mit Ihren gespeicherten SSH-Verbindungen verwendet werden. Öffnen Sie bei installierten „C++ für Linux“-Tools das Toolfenster „Terminal“. Die Dropdownliste „Terminal“ wird mit Ihren gespeicherten Verbindungen gefüllt. Wenn Sie eine Verbindung auswählen, wird ein neues Terminalfenster in Visual Studio geöffnet, in dem ein Pseudoterminal auf Ihrem Remotesystem angezeigt wird. Steuerzeichen, Farben und Cursorpositionsbewusstsein werden unterstützt.
- Visual Studio kann jetzt Unreal Engine-Klassenvorlagen für Ihre UE-Projekte hinzufügen. Um dieses Feature zu testen, stellen Sie sicher, dass IDE-Unterstützung für Unreal Engine im Visual Studio-Installer in der Workload Spieleentwicklung mit C++ ausgewählt ist. Wenn Sie an einem UE-Projekt arbeiten, klicken Sie mit der rechten Maustaste im Projekt oder auf einen Ordner/Filter und wählen Hinzufügen>UE-Klasse aus.
- Gehe zu Definition merkt sich jetzt die vorherige Signatur und navigiert entsprechend, wenn keine bessere Übereinstimmung verfügbar ist (z. B. nachdem Sie die Signatur eines der Paare manuell geändert haben). Die Reaktionsfähigkeit von Gehe zu allen wird verbessert. Zuvor wurden die Ergebnisse angezeigt, nachdem Sie die Eingabe beendet haben. In der neuen Umgebung werden die Ergebnisse während der Eingabe angezeigt.
- In Kontexten, die eine Vervollständigung des
enum
-Typs erfordern (z. B. Zuweisungen anenum
-Variablen, case-Bezeichnungen, Rückgabe desenum
-Typs usw.), wird die Liste für die automatische Vervollständigung jetzt hinsichtlich der passenden Enumeratoren und zugehörigen Konstrukte gefiltert. - NuGet PackageReference-Unterstützung wurde für C++/CLI MSBuild-Projekte hinzugefügt, die auf .NET Core ausgerichtet sind. Diese Änderung wurde vorgenommen, um die Blockierung gemischter Codebasen hinsichtlich der Übernahme von .NET Core aufzuheben. Diese Unterstützung funktioniert nicht für andere C++-Projekttypen oder C++-Projekttypen, die auf .NET Framework ausgerichtet sind. Es gibt keine Pläne, PackageReference-Unterstützung auf andere C++-Szenarien auszudehnen. Das Team arbeitet an separaten Erfahrungen mit vcpkg für Nicht-MSBuild-Szenarien und um weitere Funktionen hinzuzufügen.
- Es wurde das Fenster „Serieller Monitor“ für die eingebettete Entwicklung hinzugefügt, das über Debuggen>Windows>Serieller Monitor verfügbar ist.
- Verbesserte C++-Indizierung um ~66 % im Vergleich zu 17.2.
- Die mit Visual Studio ausgelieferte Version von CMake wurde auf Version 3.23 aktualisiert. Details zu den verfügbaren Funktionen finden Sie in den Versionshinweisen zu CMake 3.23.
- Für die Versionen von LLVM-Tools, die mit Visual Studio ausgeliefert werden, wurde ein Upgrade auf v14 durchgeführt. In den Versionshinweisen zu LLVM und Clang finden Sie Einzelheiten zu den verfügbaren Optionen.
- Das parallele Dev 16.11 C++-Toolset wurde auf Version 14.29.30145.00 aktualisiert. Die neueste Version des Dev 16.11 C++-Toolsets enthält wichtige Fehlerkorrekturen, einschließlich der Behebung aller verbleibenden C++20-Fehlerberichte. Weitere Informationen zu Fehlerkorrekturen, einschließlich C++20-Fehlerberichten in Dev 16.11, finden Sie in den Versionshinweisen zu Visual Studio 2019, Version 16.11.14.
- Es wurden verschiedene Verbesserungen an der Benutzeroberfläche im Editor für C++-Module vorgenommen. Wir arbeiten kontinuierlich daran, die Qualität der Umgebung zu verbessern, aber ermutigen Sie, 17.3 zu testen. Melden Sie verbleibende Probleme über die Entwicklercommunity.
Neuerungen bei C++ in Visual Studio, Version 17.2
Veröffentlicht im Mai 2022
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Visual Studio 2022 17.2 jetzt verfügbar |
Standardbibliothek (STL): Zusammenführung von C++20-Fehlerberichten, C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.2 |
Neue Features in der Visual Studio 17.2-IDE | Versionshinweise zu Visual Studio 2022, Version 17.2 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.2 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine partielle Liste der neuen Features in 17.2:
- Zusätzliche Compilerunterstützung für das C++23-Feature abgeleitet von
this
, verfügbar unter der/std:c++latest
-Option. - Zusätzliche IntelliSense-Unterstützung für die C++23-Features abgeleitet
this
von undif consteval
. - Zusätzlicher Inlineparametername und Unterstützung zu Eingabehinweisen. Lässt sich umschalten durch Drücken von Alt+F1 oder Doppeltippen von STRG. Dieses Verhalten kann unter Tools > Optionen > Text-Editoren > C/C++ > IntelliSense angepasst werden.
- Experimentelle Unterstützung für C++20-Module in CMake-Projekten wurde hinzugefügt. Diese Unterstützung ist derzeit nur mit dem Visual Studio (MSBuild)-Generator verfügbar.
- In 17.1 haben wir periphere Register-und RTOS-Ansichten für eingebettete Entwickler eingeführt. Wir verbessern weiterhin die Funktionen dieser Ansichten mit Ntzbarkeitsverbesserungen in 17.2:
- Das RTOS-Toolfenster ist jetzt standardmäßig ausgeblendet. Es verhindert, dass ein Toolfenster mit Fehlermeldungen angezeigt wird, die nicht relevant sind, wenn Sie kein RTOS verwenden.
- Wenn Benutzer*innen im Toolfenster auf ein RTOS-Objekt doppelklicken, wird ein Überwachungselement für das Objekt hinzugefügt.
- Wenn Sie die Start- und Endwerte für den Stapelzeiger im RTOS-Toolfenster auswählen, wird er im Speicherfenster geöffnet.
- Es wurde Threadbewusstsein für Geräteziele zum Anrufstapelfenster hinzugefügt.
- Benutzer können jetzt neben Peripheriegeräten, Registern oder Feldern auf ein Stecknadelsymbol klicken, um sie oben in der Peripherieansicht anzuheften.
- Es wurden Implementierungen der verbleibenden C++20-Fehlerberichte (auch als Backports bezeichnet) hinzugefügt. Alle C++20-Features sind jetzt unter der
/std:c++20
-Option verfügbar. Weitere Informationen zu den implementierten Backports finden Sie im C++20 Fehlerberichtprojekt im Microsoft/STL-GitHub-Repository und im MSVC STL Completes/std:c++20
-Blogeintrag. - Es wurden verschiedene C++23 Library -Funktionen hinzugefügt, die unter der
/std:c++latest
-Option verfügbar sind. Weitere Informationen zu den neuen Features finden Sie im STL Repo-Änderungsprotokoll. - Verbesserte Leistung der anfänglichen C++-Indizierung um bis zu 20 %, je nach Tiefe des einschließenden Diagramms.
Neuerungen bei C++ in Visual Studio, Version 17.1
Veröffentlicht im Februar 2022
Weitere Informationen zu | Siehe |
---|---|
Neuerungen für C++-Entwicklerinnen und -Entwickler | Visual Studio 2022 17.1 ist jetzt verfügbar |
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.1 |
Neue Features in der Visual Studio 17.1-IDE | Versionshinweise zu Visual Studio 2022, Version 17.1 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.1 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 |
Eine partielle Liste der neuen Features in 17.1:
- Eine neue Vorlage zum Konfigurieren der Voreinstellungen wird hinzugefügt, um CMake-Projekte auf einem macOS-Remotesystem mit
CMakePresets.json
zu konfigurieren und zu erstellen. Sie können CMake-Ziele auch auf einem macOS-Remotesystem starten und dann mit remote mithilfe des Visual Studio-Debuggers debuggen, der von GDB oder LLDB unterstützt wird. - Sie können jetzt Kernspeicherabbilder auf einem macOS-Remotesystem über Visual Studio mit LLDB oder GDB debuggen.
- Die mit Visual Studio ausgelieferten Versionen von
Clang
undLLVM
werden auf v13 upgegradet. - Die CMake-Integration von Visual Studio wird nur aktiviert, wenn im Stammverzeichnis des geöffneten Arbeitsbereichs eine
CMakeLists.txt
-Datei gefunden wird. Wenn eineCMakeLists.txt
-Datei auf einer anderen Ebene des Arbeitsbereichs identifiziert wird, werden Sie durch eine Benachrichtigung aufgefordert, die CMake-Integration von Visual Studio zu aktivieren. - Neue Ansichten, mit denen Sie Peripherieregister auf Mikrocontrollern und RTOS-Objekten (Real Time Operating Systems) prüfen und mit ihnen interagieren können. Verfügbar über Debuggen>Windows>Eingebettete Register
- Eine neue Threadansicht für RTOS-Projekte wurde hinzugefügt, die über Debuggen>Windows>RTOS-Objekte verfügbar ist. Weitere Informationen finden Sie unter Eingebettete Softwareentwicklung in Visual Studio.
Neuerungen bei C++ in Visual Studio Version 17.0
Veröffentlicht im November 2021
Weitere Informationen zu | Siehe |
---|---|
Neue Features in der Visual Studio 17.0-IDE | Versionshinweise zu Visual Studio 2022, Version 17.0 |
Standardbibliothek (STL): Zusammenführung von C++26- und C++23-Funktionen, C++20-Fehlerberichten, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern | STL-Änderungsprotokoll 17.0 |
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.0 | Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10 |
Eine Übersicht über wichtige neue Features in Visual Studio 2022, Version 17.0:
- Die Visual Studio-IDE,
devenv.exe
, ist jetzt eine native 64-Bit-App. - Das MSVC-Toolset verwendet jetzt standardmäßig SHA-256-Quellhashing n Debugdatensätzen. Zuvor verwendete das Toolset standardmäßig MD5 für das Quellhashing.
- Die v143-Buildtools sind jetzt über das Visual Studio-Installationsprogramm sowie über die eigenständigen Buildtools verfügbar.
Hot Reload für native C++-Programmiersprache
- Mit Hot Reload für C++ können viele verschiedene Codebearbeitungen an laufenden Apps vorgenommen werden, ohne dass die Ausführung der App durch einen Breakpoint oder Ähnliches unterbrochen werden muss.
Wenn Sie ihre App in Visual Studio 2022 im Debugger starten, können Sie die Schaltfläche „Hot Reload“ verwenden, um Ihre Anwendung zu bearbeiten, während sie ausgeführt wird. Diese Funktion wird durch das native Feature „Bearbeiten und fortfahren“ unterstützt. Weitere Informationen zu unterstützten Bearbeitungen finden Sie unter Bearbeiten und fortfahren (C++).
- Hot Reload unterstützt CMake-Projekte und Projekte, bei denen „Ordner öffnen“ verwendet wird.
WSL2-Unterstützung
- Das Kompilieren und Debuggen kann jetzt nativ unter WSL2 erfolgen, ohne dass eine SSH-Verbindung hergestellt wird. Sowohl plattformübergreifende CMake-Projekte als auch MSBuild-basierte Linux-Projekte werden unterstützt.
Verbesserte CMake-Unterstützung
Für die in Visual Studio enthaltene Version von CMake wurde ein Upgrade auf Version 3.21 ausgeführt. Weitere Informationen zu dieser Version finden Sie in den Versionshinweisen zu CMake 3.21.
CMake-Übersichtsseiten wurden aktualisiert, sodass sie
CMakePresets.json
unterstützen.Sie können ihre CMake-Projekte jetzt mit CMake 3.21 und
CMakePresets.json
V3 konfigurieren und erstellen.Visual Studio unterstützt jetzt die Option
buildPresets.targets
inCMakePresets.json
. Mit dieser Option können Sie eine Teilmenge von Zielen in Ihrem CMake-Projekt erstellen.Das Menü „Projekt“ in CMake-Projekten wurde optimiert und enthält die Optionen „Cache löschen und neu konfigurieren“ und „Cache anzeigen“.
Die Compileroption
/scanDependencies
wurde implementiert, um wie in P1689R5 beschrieben die C++20-Modulabhängigkeiten für CMake-Projekte aufzulisten. Dies ist ein Schritt hin zur Unterstützung der Erstellung modulbasierter Projekte mit CMake, und es wird daran gearbeitet, diese Unterstützung in späteren Versionen zu vervollständigen.
Verbesserungen der Standardbibliothek
Ausgewählte Verbesserungen an der Standardbibliothek (STL) werden hier hervorgehoben. Eine vollständige Liste der neuen Funktionalitäten, Änderungen, Fehlerkorrekturen und Leistungsverbesserungen finden Sie im Änderungsprotokoll des STL-Teams.
- Es wurden Debuggingschnellansichten hinzugefügt, um die Darstellung der folgenden Typen zu verbessern:
source_location
,bind_front()
,u8string
(einschließlich Iteratoren),default_sentinel_t
,unreachable_sentinel_t
,ranges::empty_view
,ranges::single_view
,ranges::iota_view
(einschließlich Iterator/Sentinel),ranges::ref_view
,thread
,thread::id
,jthread
undfilesystem::path
. [[nodiscard]]
wurde zur Familie derstoi()
-Funktionen in<string>
und zu verschiedenen Funktionen in<locale>
hinzugefügt, zum Beispielcollate
-Memberfunktionen,has_facet()
und denisalnum()
- undtolower()
-Funktionsfamilien.- P0980R1: In VS 2019 16.10 wurde
std::string
constexpr
eingeführt. Wird jetzt für Clang unterstützt. - P1004R2: In VS 2019 16.10 wurde
std::vector
constexpr
eingeführt. Wird jetzt für Clang unterstützt.
Erwähnenswerte Features für C++23
- P1048R1: Das Merkmal
is_scoped_enum
wurde zur C++-Standardbibliothek hinzugefügt. Es erkennt, ob es sich bei einem Typ um eine Enumeration mit eigenem Gültigkeitsbereich handelt. - P1132R7:
out_ptr()
,inout_ptr()
- P1679R3:
contains()
fürbasic_string
undbasic_string_view
- P1682R3:
to_underlying()
für Enumerationen - P2162R2: Erben von
std::variant
möglich - P2166R1 Das Erstellen von
basic_string
undbasic_string_view
ausnullptr
verbieten. Diese Änderung ist ein Breaking Change der Quelle. Code mit vorher nicht definiertem Verhalten wird zur Laufzeit jetzt mit Compilerfehlern abgelehnt. - P2186R2: Die Unterstützung für die Garbage Collection wurde entfernt. Durch diese Änderung werden
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
, undget_pointer_safety
entfernt. Diese Funktionen waren zuvor ohne Wirkung.
Erwähnenswerte Leistungsverbesserungen
<format>
erkennt jetzt, wenn fürbasic_string
odervector
inback_insert_iterator
geschrieben wird. Außerdem erfolgt der Aufruf voninsert()
bei derend()
-Funktion des Containers schneller.- Die Leistung von
std::find()
undstd::count()
fürvector<bool>
wurde um das 19- bzw. 26-Fache verbessert. - Die Leistung von
std::count()
fürvector<bool>
wurde verbessert. std::byte
ist nun genauso leistungsfähig wieunsigned char
inreverse()
undvariant::swap()
.
Clang- und LLVM-Unterstützung
Die mit Visual Studio ausgelieferten LLVM-Tools werden auf LLVM 12 aktualisiert. Weitere Informationen finden Sie in den Versionshinweisen zu LLVM.
Die Clang-cl-Unterstützung wurde auf LLVM 12 aktualisiert.
Sie können jetzt Prozesse, die auf einem Remotesystem von Visual Studio ausgeführt werden, mit LLDB debuggen.
C++ AMP veraltet
- C++ AMP-Header gelten jetzt als veraltet. Das Einschließen von
<amp.h>
in ein C++-Projekt generiert Buildfehler. Definieren Sie_SILENCE_AMP_DEPRECATION_WARNINGS
, um die Fehler auszublenden. Weitere Informationen finden Sie unter den Links zum Lebensende des AMP.
IntelliSense-Optimierungen
- Es wurden Verbesserungen an C++-IntelliSense beim Bereitstellen von Navigations- und Syntaxhervorhebungen für Typen aus importierten Modulen und Headereinheiten durchgeführt. IntelliSense ist ein aktiver Investitionsbereich. Helfen Sie bei der Verbesserung: Teilen Sie Ihr Feedback zur Entwicklercommunity mithilfe von Hilfe>Feedback senden mit.
- Verbesserte C++-IntelliSense-Leistung durch Optimieren der Verwendung von zwischengespeicherten Headern und des Zugriffs auf Symboldatenbanken und in der Folge verbesserte Ladezeiten beim Zugriff auf Ihren Code.
- Der IntelliSense-Code-Linter für C++ ist jetzt standardmäßig aktiviert und unterbreitet sofort Vorschläge bei der Eingabe und Korrekturvorschläge für häufige Codefehler.
- C++-IntelliSense für CMake-Projekte funktioniert jetzt, wenn eine Voreinstellung mit einem Anzeigenamen verwendet wird.
Updates an C++-Workloads
- Aktualisierung auf NDK r21 LTS in der Workload Visual C++ Mobile-Entwicklung
- Die Workload Spieleentwicklung mit C++ installiert jetzt die neueste Unreal Engine mit Unterstützung für Visual Studio 2022.
Verbesserungen bei der Codeanalyse
- Die Codeanalyse erzwingt jetzt, dass Rückgabewerte von Funktionen, die mit
_Check_return_
oder_Must_inspect_result_
kommentiert sind, überprüft werden müssen. - Die Erkennung von NULL-Zeigerdereferenzierungen wurde in den Codeanalysetools verbessert.
- Unterstützung für
gsl::not_null
zur Codeanalyse hinzugefügt. - Unterstützung für Libfuzzer unter der Compileroption
/fsanitize=fuzzer
Versionshinweise für ältere Versionen
Versionshinweise für ältere C++-Versionen sind ebenfalls verfügbar.
- Weitere Informationen zu Neuerungen für C++ in Visual Studio 2019 finden Sie unter Neuerungen bei C++ in Visual Studio.
- Weitere Informationen zu Neuerungen für C++ in Visual Studio 2017 finden Sie unter Neuerungen für C++ in Visual Studio 2017.
- Informationen zu den Neuerungen in früheren Versionen finden Sie unter Visual C++ What's new 2003 bis 2015.
Bekannte Probleme
IntelliSense für C++
Informationen zu weiteren ungelösten Problemen und verfügbaren Problemumgehungen für C++ in Visual Studio 2022 finden Sie in der Problemliste der C++-Entwicklercommunity.
Feedback und Vorschläge
Wir freuen uns darauf, von Ihnen zu hören. Sie können ein Problem melden oder ein Feature vorschlagen, indem Sie das Symbol „Feedback senden“ in der oberen rechten Ecke des Installationsprogramms oder der Visual Studio-IDE nutzen oder Hilfe>Feedback senden verwenden. Sie können Ihre Probleme in der Entwicklercommunity für Visual Studio nachverfolgen, in der Sie Kommentare hinzufügen und Lösungen suchen können. Über unseren Livechatsupport erhalten Sie zudem kostenlose Hilfe bei der Installation.
Blogs
Nutzen Sie die Erkenntnisse und Empfehlungen, die Sie auf der Website Microsoft Developer Blogs finden, um über alle neuen Versionen auf dem Laufenden zu bleiben. Die Blogs enthalten spezialisierte Beiträge zu einer Vielzahl von Features. Die Bereiche C++ Team Blog und Visual Studio Blog sind von besonderem Interesse.