Neuerungen bei C++ in Visual Studio 2022
Visual Studio 2022 enthält viele Updates und Fixes für die C++-Umgebung von Microsoft. Es wurden Features hinzugefügt und zahlreiche Fehler und Probleme mit dem Compiler sowie mit Tools behoben. 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: Neuerungen.
Neuerungen bei C++ in Visual Studio, Version 17.5
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio 17.5 finden Sie in den Versionshinweisen zu Visual Studio 2022, Version 17.5.
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 zur Unterstützung des obigen Elements 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
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio 17.4 finden Sie in den Versionshinweisen zu Visual Studio 2022, Version 17.4.
Compilerfehlermeldungen wurden verbessert, um genauere und hilfreichere Informationen bereitzustellen, insbesondere für Konzepte.
Experimentelle MSVC-Option
/experimental:log<directory>
wurde hinzugefügt, um SARIF-Buildprotokolle 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 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 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
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio 17.3 finden Sie in den Versionshinweisen zu Visual Studio 2022, Version 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 wurde 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.
Wir haben 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
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio 17.2 finden Sie in den Versionshinweisen zu Visual Studio 2022, Version 17.1.
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 Sie im Toolfenster auf ein RTOS-Objekt doppelklicken (auswählen), 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 es im Speicherfenster geöffnet.
- Wir haben 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.
Wir haben 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
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio 17.1 finden Sie in den Versionshinweisen zu Visual Studio 2022, Version 17.1.
Eine neue Vorlage zum Konfigurieren der Voreinstellungen wurde 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
wurden auf v13 aktualisiert.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.Ein neues Fenster für die Registervisualisierung für eingebettete Ziele wurde hinzugefügt, das über Debuggen>Windows>Eingebettete Register verfügbar ist.
Eine neue Threadansicht für RTOS-Projekte wurde hinzugefügt, die über Debuggen>Windows>RTOS-Objekte verfügbar ist.
Neuerungen bei C++ in Visual Studio Version 17.0
Eine Zusammenfassung der neuen Features und Fehlerbehebungen in Visual Studio finden Sie in den Versionshinweisen zu 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
Auf 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 für die Unterstützung von
CMakePresets.json
aktualisiert.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 umfasst 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. Dies wird nun auch für Clang unterstützt. - P1004R2: In VS 2019 16.10 wurde
std::vector
constexpr
eingeführt. Dies wird nun auch 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: Es kann verhindert werden, dass
basic_string
undbasic_string_view
ausnullptr
erstellt werden. 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 wurden 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-Zeigerdereferenzierung in den Codeanalysetools wurde 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 2019, Details zu Neuerungen für C++ in Visual Studio 2017 im Artikel Neuerungen bei C++ in Visual Studio 2017 und Informationen zu Neuerungen in früheren Versionen unter Neuerungen für Visual C++ zwischen 2003 und 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.