Novità di C++ in Visual Studio 2022
Visual Studio 2022 offre numerosi aggiornamenti e correzioni al compilatore e agli strumenti di Microsoft C++. L'IDE di Visual Studio offre anche miglioramenti significativi delle prestazioni e della produttività e ora viene eseguito in modo nativo come applicazione a 64 bit.
- Per altre informazioni sulle novità di Visual Studio, vedere Novità di Visual Studio 2022.
- Per informazioni sulle novità della documentazione di C++, vedere Documentazione di Microsoft C++: Novità.
- Per informazioni sulle date di compilazione della versione, vedere Cronologia delle versioni di Visual Studio 2022.
Novità di C++ in Visual Studio versione 17.12
Data di rilascio: novembre 2024
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.12 |
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti | Log delle modifiche STL 17.12 |
Nuove funzionalità nell'IDE di Visual Studio 17.12 | Note sulla versione di Visual Studio 2022 versione 17.12 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.12 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.12 |
Una rapida evidenziazione di alcune delle nuove funzionalità:
- Miglioramenti della libreria standard
- Implementazione degli intervalli di formattazione (P2286R8) C++23 completata. Aggiunta di formattatori per gli adattatori
stack
contenitore ,queue
epriority_queue
. - Aggiunta di operatori pedice multidimensionali, che supportano
<mdspan>
anche . Ad esempio:print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- Implementazione degli intervalli di formattazione (P2286R8) C++23 completata. Aggiunta di formattatori per gli adattatori
- Sviluppo di giochi in C++
- Aprire direttamente progetti unreal Engine in Visual Studio senza dover generare un file di soluzione di Visual Studio che esegue il wrapping del progetto Unreal Engine. Per altre informazioni, vedere Usare progetti unreal Engine in Visual Studio.
- È possibile specificare gli argomenti della riga di comando da passare durante il debug direttamente dalla barra degli strumenti. Per altre informazioni, vedere Impostare gli argomenti della riga di comando per i progetti unreal Engine.
- Compilare informazioni dettagliate
- È possibile eseguire Build Insights nei file selezionati. Selezionare i file desiderati nel Esplora soluzioni, fare clic con il pulsante destro del mouse e scegliere Esegui Informazioni dettagliate compilazione nei file selezionati:
- È possibile filtrare i risultati di Build Insights in base al progetto. Fare clic sul pulsante filtro nell'intestazione della colonna del filtro e selezionare i progetti per cui si desidera visualizzare i risultati:
- Facendo clic sull'icona del punto interrogativo nella finestra Build Insights (Compila informazioni dettagliate) per visualizzare una breve descrizione delle schede nella finestra Build Insights (Compila informazioni dettagliate) e un collegamento alla documentazione per una spiegazione dettagliata:
- GitHub Copilot
- È possibile fare clic su Ask Copilot accanto al valore di una variabile per ottenere informazioni dettagliate guidate dall'intelligenza artificiale su ciò che ha portato allo stato corrente. Ad esempio, il programma seguente presenta un errore off-by-one nella condizione del ciclo:
Se si fa clic sull'icona Ask Copilot per laIl codice che ha causato questo problema è: per (auto = h.animals_.begin(); <= h.animals_.end(); it++).
it
variabile, verrà illustrato perché è<NULL>
:Questo errore si trova all'interno di una funzione definita come int calculate_number_of_cats(const house& h). Il messaggio di GitHub Copilot indica: "Il valore dell'espressione è NULL, il che significa che l'iteratore non punta ad alcun elemento valido nel vettore animals_. Nel contesto del programma, dovrebbe scorrere il vettore animals_ nell'oggetto house per contare il numero di oggetti cat. Perché è null. In base alle variabili locali e al contesto dello stack di chiamate: l'oggetto house h ha un vettore di animals_ vuoto (size=0). La condizione del ciclo <= h.animals_.end() non è corretta. Dovrebbe essere != h.animals_.end()."
- È possibile fare clic su Chiedi a Copilot informazioni sugli errori nell'elenco degli errori di Visual Studio per ottenere assistenza sull'errore e su una correzione suggerita. Ad esempio:
Se si fa clic su Ask Copilot, viene indicato l'errore:L'icona Ask Copilot è evidenziata accanto a un errore che unique_ptr sta tentando di fare riferimento a una funzione eliminata.
Il messaggio di Copilot indica: "L'errore si verifica perché il ciclo for basato sull'intervallo tenta di copiare gli oggetti std::unique_ptr, che non è consentito perché non è possibile copiare std::unique_ptr. Per risolvere questo problema, il ciclo è stato modificato in modo da usare un riferimento per evitare di copiare gli oggetti std::unique_ptr. In questo modo, il ciclo scorre i riferimenti agli oggetti std::unique_ptr consentiti."
- Debug
- Nuovi visualizzatori di debug per
mutex
,recursive_mutex
emove_iterator
. - Il debugger visualizza ora i valori restituiti inline:
- Nuovi visualizzatori di debug per
Novità di C++ in Visual Studio versione 17.11
Data di rilascio: agosto 2024
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.11 |
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti | Log modifiche STL 17.11 |
Nuove funzionalità nell'IDE di Visual Studio 17.11 | Note sulla versione di Visual Studio 2022 versione 17.11 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.11 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.11 |
Elenco parziale delle nuove funzionalità:
Miglioramenti della libreria standard
- L'implementazione dell'output formattato include
std::range_formatter
ora i formattatori perstd::pair
estd::tuple
. - Aggiunta del supporto per
std::println()
senza argomenti. In questo modo viene stampata una riga vuota come proposta in P3142R0. - Miglioramento della vettorizzazione per diversi algoritmi, tra cui
replace_copy()
,ranges::replace_copy
replace_copy_if()
,find_first_of()
ranges::replace_copy_if
eranges::find_first_of
, per elementi a 8 bit e a 16 bit, ,mismatch()
ranges::mismatch
count()
find()
ranges::find
ranges::count
,ranges::find_last
e .ranges::iota
- L'implementazione dell'output formattato include
Sviluppo di giochi in C++
- È ora possibile aggiungere modelli di classe, moduli e plug-in comuni di Unreal Engine da Visual Studio. Per altre informazioni, vedere Aggiungere classi, moduli e plug-in un motore Unreal in Visual Studio.
- La nuova barra degli strumenti di Unreal Engine consente di accedere rapidamente alle azioni correlate a Unreal Engine da Visual Studio. La barra degli strumenti consente di collegarsi rapidamente ai processi di Unreal Engine, di ripetere l'analisi della cache blueprints, di accedere rapidamente al log del motore Unreal e di accedere rapidamente alla pagina di configurazione del motore unreal per Visual Studio. Per altre informazioni, vedere Barra degli strumenti del motore Unreal.
- È ora possibile filtrare i risultati della traccia in base al progetto. Inoltre, i risultati in ogni riga mostrano il percorso relativo e il nome del file anziché il percorso completo. Anche il raggruppamento dei risultati nella visualizzazione File inclusi è migliorato:
La vista File inclusi include una nuova colonna per il progetto. La colonna Progetto è selezionata e vengono selezionati progetti come (Seleziona tutto), CompilerIdC, OpenAL, common e così via. I file inclusi sono elencati in base al percorso relativo e al nome file e raggruppati.
Debug di CMake
- È ora possibile eseguire il debug degli script e
CMakeLists.txt
dei file CMake nel debugger di Visual Studio per i progetti CMake destinati a Linux tramite sottosistema Windows per Linux (WSL) o SSH. Per avviare una sessione di debug di CMake in Visual Studio, impostare un punto di interruzione nelCMakeLists.txt
file e quindi passare a Progetto>Configura cache con debug CMake.
- È ora possibile eseguire il debug degli script e
GitHub Copilot
- Quando si passa il puntatore del mouse sui simboli nell'editor di codice, fare clic sul pulsante Copilot Tell me more (Informazioni rapide) nella finestra di dialogo Informazioni rapide per altre informazioni su un determinato simbolo:
La finestra Informazioni rapide viene visualizzata sopra una funzione. Il collegamento Dimmi altro è evidenziato.
- GitHub Copilot può generare suggerimenti di denominazione per gli identificatori (variabili, metodi o classi) in base al modo in cui viene usato l'identificatore e lo stile del codice.
La finestra di dialogo Rinomina include un campo Nuovo nome con un elenco a discesa che mostra le opzioni seguenti: text_color, font_color, display_color, console_color e menu_text_color.
È necessaria una sottoscrizione di GitHub Copilot attiva. Fare clic con il pulsante destro del mouse sulla variabile da rinominare e scegliere Rinomina (
Ctrl+R
,Ctrl+R
). Selezionare l'icona sparkle di GitHub Copilot per generare suggerimenti di denominazione.Debug
- I punti di interruzione condizionali in C++ sono più veloci.
Miglioramenti della diagnostica
- Miglioramento della diagnostica durante la chiamata
std::get<T>
a unstd::tuple
oggetto con più istanze diT
negli argomenti del modello. MSVC usato per segnalare:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Ora segnala:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Diagnostica migliorata quando
std::ranges::to
non è possibile costruire il risultato richiesto. MSVC usato per segnalare:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Ora segnala:
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)'
- Miglioramento della diagnostica durante la chiamata
Novità di C++ in Visual Studio versione 17.10
Data di rilascio: maggio 2024
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.10 |
Libreria standard (STL) ha unito le funzionalità C++26 e C++23, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti | Log delle modifiche STL 17.10 |
Nuove funzionalità nell'IDE di Visual Studio 17.10 | Note sulla versione di Visual Studio 2022 versione 17.10 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.10 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.10 |
Elenco parziale delle nuove funzionalità:
- Aggiornamento del set di strumenti MSVC: la versione del set di strumenti MSVC viene aggiornata dalla versione 19.39 alla versione 19.40. Ciò può influire sui progetti con presupposti di versione. Per altre informazioni su alcuni modi in cui ciò influisce sui progetti che presuppongono che le versioni MSVC siano tutte 19.3X per Visual Studio 2022, vedere MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
- Miglioramenti della libreria standard: la libreria standard ha aggiunto il supporto per i puntatori di formattazione P2510R3, che porta il set di identificatori di formato per i puntatori quando si usa
std::format
più in linea con quelli già esistenti per i numeri interi. Sono stati migliorati le implementazioni vettorializzate distd::min_element
,std::ranges::min
e amici. - Informazioni dettagliate sulla compilazione: fornisce ora informazioni sulla creazione di istanze del modello. Vedere Visualizzazione modelli per Informazioni dettagliate sulla compilazione in Visual Studio o la visualizzazione Pure Virtual C++ - Templates per Build Insights in Visual Studio recording (Informazioni dettagliate compilazione in Visual Studio ).
- Plug-in unreal Engine: è disponibile una nuova funzionalità di consenso esplicito per l'esecuzione del plug-in unreal Engine in background, riducendo i costi di avvio. Si tratta di una funzionalità di consenso esplicito attivata tramite Strumenti>Opzioni>Unreal Engine.
- Nuove funzionalità per Linux: vedere Nuove funzionalità di sviluppo linux in Visual Studio.
- Destinazioni CMake: è ora possibile aggiungere destinazioni nella visualizzazione Destinazioni CMake.
- Gestione connessioni'esperienza utente: l'esperienza utente offre un'esperienza più semplice per la connessione a sistemi remoti. Per altre informazioni, vedere Miglioramenti dell'usabilità in Visual Studio Gestione connessioni.
- Commenti delle richieste pull: è ora possibile visualizzare i commenti di GitHub e Azure DevOps direttamente nel file di lavoro. Abilitare il flag di funzionalità, i commenti delle richieste pull in Opzioni>Funzionalità di anteprima dell'ambiente>ed eseguire il checkout del ramo di richiesta pull per iniziare.
- Contenuto generato dall'intelligenza artificiale: GitHub Copilot può ora elaborare le descrizioni delle richieste pull. Richiede una sottoscrizione di GitHub Copilot attiva. Provare facendo clic sull'icona a forma di penna Aggiungi descrizione richiesta pull generata dall'intelligenza artificiale all'interno della finestra Crea richiesta pull.
- Anteprima immagine: passare il puntatore del mouse su un percorso di immagine per visualizzare un'anteprima con i dettagli delle dimensioni. La dimensione è limitata a 500 px wide e high.
Il mouse passa il puntatore del mouse sulla riga std::filesystem::p ath vs_logo_path = ".. /images/vs_logo.png". Sotto viene visualizzata un'anteprima del logo di Visual Studio e le informazioni relative alle dimensioni di 251 x 500 pixel e 13,65 KB.
- Creazione di punti di interruzione/punto di analisi: è ora possibile creare punti di interruzione condizionali o punti di traccia direttamente dalle espressioni nel codice sorgente dal menu di scelta rapida. Questa operazione funziona su nomi di proprietà o campi e valori da auto, variabili locali, finestre espressioni di controllo o Suggerimenti dati.
- Connetti alla finestra di dialogo Processo: la funzionalità fornita dalla finestra di dialogo Connetti a processo è più facile da usare. È ora possibile passare facilmente tra visualizzazioni ad albero e elenco, organizzare i processi meglio con sezioni comprimibili e selezionare i tipi di codice con una casella combinata semplificata. Inoltre, la funzionalità "Select/Track Window" è ora più facile da usare, consentendo il rilevamento bidirezionale: la selezione di un processo evidenzia la finestra e facendo clic su una finestra viene selezionato il processo.
- Integrazione di GitHub Copilot: le estensioni GitHub Copilot e Copilot Chat sono ora unificate e ora vengono fornite direttamente in Visual Studio. Per installarlo, installare il componente GitHub Copilot nel Programma di installazione di Visual Studio:
L'interfaccia di GitHub Copilot si trova nell'angolo superiore destro di Visual Studio. Per usarlo, è necessaria una sottoscrizione di GitHub Copilot attiva.
Il pulsante GitHub Copilot viene visualizzato nell'angolo superiore destro di Visual Studio. Include opzioni per aprire una finestra di chat, le impostazioni di GitHub Copilot, altre informazioni e gestire la sottoscrizione di Copilot.
Novità di C++ in Visual Studio versione 17.9
Data di rilascio: febbraio 2024
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.9 |
Funzionalità unite della libreria standard (STL) C++23, miglioramenti delle prestazioni, comportamento avanzato, risoluzione dei problemi LWG e bug corretti | Log modifiche STL 17.9 |
Nuove funzionalità nell'IDE di Visual Studio 17.9 | Note sulla versione di Visual Studio 2022 versione 17.9 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.9 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Riepilogo degli aggiornamenti back-end C++ | Aggiornamenti back-end MSVC a partire da Visual Studio 2022 versione 17.3 |
Elenco parziale delle nuove funzionalità:
#include
diagnostica, che fornisce un'analisi dettagliata delle#include
direttive. Attivare questa funzionalità facendo clic con il pulsante destro del mouse su un e#include
scegliendo #include direttive>Attiva diagnostica direttiva #include. Sopra ogni#include
è il numero di volte in cui il codice fa riferimento a tale#include
file. Fare clic sul collegamento di riferimento per passare alla posizione in cui il codice usa un elemento del file di intestazione. Per visualizzare il tempo di compilazione delle#include
direttive, eseguire Build Insights passando a Build Run Build Insights on Solution Build Build Insights (Compila>informazioni dettagliate compilazione nella compilazione della soluzione).>Sopra # include è un collegamento **reference** e molti dei riferimenti a questo file di inclusione # (in questo caso 1). Viene elencato anche il tempo di compilazione (in questo caso inferiore a 1/2 secondi).
- Visualizzazione del layout di memoria, che mostra come viene disposta la memoria per le classi, gli struct e le unioni. Passare il puntatore del mouse su un tipo e scegliere il collegamento Layout memoria in Informazioni rapide per aprire una finestra dedicata che visualizza il layout di memoria del tipo selezionato. Passando il puntatore del mouse sui singoli tipi di dati all'interno di questa finestra, vengono fornite informazioni dettagliate sulle dimensioni e l'offset all'interno del tipo.
La finestra del layout di memoria mostra il contenuto della classe Snake. Mostra gli offset di memoria dei vari campi della classe, ad esempio le classi Point per la posizione della testa e del corpo, il punteggio e così via.
- È ora possibile specificare il proprio eseguibile CMake personalizzato. Questa funzionalità è utile se si vuole usare una versione specifica di CMake non fornita con Visual Studio. Passare a Opzioni strumenti>e selezionare CMake General (Generale CMake).> Selezionare Abilita eseguibile CMake personalizzato e specificare il percorso della directory dell'eseguibile CMake.
La finestra di dialogo Opzioni CMake con l'opzione "Abilita eseguibile CMake personalizzato" e il campo "Directory eseguibile CMake" evidenziato.
- IntelliSense migliorato per i progetti unreal Engine.
- Miglioramento del supporto di C++23:
std::format
eformattable
std::span
,range_format
,format_kind
eset_debug_format()
come parte di P2286R8 Intervalli<mdspan>
di formattazione per P0009R18 e modifiche successive di formulazione applicate allo standard C++23. Inoltre,format()
può formattare i puntatori per P2510R3.
Novità di C++ in Visual Studio versione 17.8
Data di rilascio: novembre 2023
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.8 |
Libreria standard (STL) unita a C++26, funzionalità C++23, estensioni C++20, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.8 |
Nuove funzionalità nell'IDE di Visual Studio 17.8 | Note sulla versione di Visual Studio 2022 versione 17.8 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.8 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Panoramica dei miglioramenti di C++ in Visual Studio, VS Code e vcpkg durante il 2023 | Un anno di miglioramenti di C++ |
Elenco parziale delle nuove funzionalità:
- Diagnostica strutturata C++ nella finestra Output e una nuova finestra dei dettagli del problema che fornisce altre informazioni sull'errore. Per altre informazioni, vedere Structured SARIF Output and Problem Details Window .For more information, see Structured SARIF Output and Problem Details Window.
- Funzionalità che consente di visualizzare le dimensioni e l'allineamento delle classi, degli struct, delle unioni, dei tipi di base o delle enumerazioni anche prima della compilazione del codice. Passare il puntatore del mouse sull'identificatore e visualizzare le informazioni sulle dimensioni e sull'allineamento.
- Funzionalità che suggerisce quando contrassegnare le funzioni
const
membro perché non modificano lo stato dell'oggetto. Passare il puntatore del mouse su una funzione membro e fare clic sull'icona della lampadina per contrassegnare la funzione comeconst
. - Visual Studio richiede ora di contrassegnare le funzioni globali come statiche tramite un'icona del cacciavite visualizzata dal nome della funzione. Fare clic sull'icona del cacciavite per contrassegnare la funzione come statica.
- Le direttive #include inutilizzate vengono disattivate nell'editor. È possibile passare il puntatore del mouse su un oggetto dimmed include e usare il menu lampadina per rimuovere che includono o tutte le inclusioni inutilizzate. È anche possibile aggiungere
#include
direttive per le entità incluse indirettamente tramite altre intestazioni. Per altre informazioni, vedere Pulire C/C++ include in Visual Studio. - Supporto di un motore Unreal:
- Unreal Engine Test Adapter consente di individuare, eseguire, gestire ed eseguire il debug dei test del motore Unreal senza uscire dall'IDE di Visual Studio.
- Con i frammenti di codice di Unreal Engine è possibile trovare costrutti unreal engine comuni come frammenti di codice nell'elenco dei membri.
- Build Insights è ora integrato con Visual Studio 2022 e funziona con progetti MSBuild e CMake usando MSVC. È ora possibile visualizzare informazioni aggiuntive sulla compilazione di una funzione, ad esempio il tempo necessario per la compilazione e il numero di ForceInlines e l'impatto dei file di intestazione sul tempo di compilazione. Per altre informazioni, vedere Esercitazione: Risolvere i problemi di inlining delle funzioni in fase di compilazione ed Esercitazione: Risolvere l'impatto del file di intestazione sul tempo di compilazione.
- Il supporto di unit test di Linux remoti consente ora di eseguire i test CTest e GTest nei computer Linux remoti da Esplora test di Visual Studio, proprio come i test locali.
Novità di C++ in Visual Studio versione 17.7
Data di rilascio: agosto 2023
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.7 |
Nuove funzionalità C++ specifiche per lo sviluppo di giochi | Scatenando la potenza di Visual Studio 2022 per lo sviluppo di giochi C++ |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.7 |
Nuove funzionalità nell'IDE di Visual Studio 17.7 | Note sulla versione di Visual Studio 2022 versione 17.7 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.7 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Elenco parziale delle nuove funzionalità:
- Sessioni di debug più veloci e tempi di caricamento del progetto più veloci
- Visualizzazione dettagliata dell'espansione di macro
- Download con un clic per sottosistema Windows per Linux (WSL)
- Supporto migliorato per i commenti Doxygen
- C++ Build Insights for game development (Informazioni dettagliate sulla compilazione di C++ per lo sviluppo di giochi)
- Aggiunta
/std:clatest
per il compilatore C. - Miglioramenti del progetto Unreal Engine, ad esempio intelliSense più veloce e colorazione della sintassi, la possibilità di trovare tutti i riferimenti a Progetto motore Unreal e altro ancora.
Novità di C++ in Visual Studio versione 17.6
Data di rilascio: maggio 2023
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.6 |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.6 |
Nuove funzionalità nell'IDE di Visual Studio 17.6 | Note sulla versione di Visual Studio 2022 versione 17.6 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.6 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Un elenco parziale di nuove funzionalità include:
- Debug di script CMake
- Supporto predefinito per il linguaggio HLSL (High Level Shading Language)
- Visualizzatore log del motore unreal
- VCPKG viene ora aggiunto per impostazione predefinita
- Supporto iniziale per C++20 nei progetti C++/CLI e alcune funzionalità della libreria standard C++23 per gli intervalli.
Novità di C++ in Visual Studio versione 17.5
Data di rilascio: febbraio 2023
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.5 |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.5 |
Nuove funzionalità nell'IDE di Visual Studio 17.5 | Note sulla versione di Visual Studio 2022 versione 17.5 |
Un elenco parziale di nuove funzionalità include:
std::move
,std::forward
,std::move_if_noexcept
estd::forward_like
ora non producono chiamate di funzione nel codice generato, anche in modalità di debug. Questa modifica evita i cast denominati che causano un sovraccarico non necessario nelle compilazioni di debug./permissive-
(o un'opzione che la implica, ad esempio/std:c++20
ostd:c++latest
) è obbligatoria.Aggiunta di
[[msvc::intrinsic]]
. È possibile applicare questo attributo a funzioni non ricorsive costituite da un singolo cast, che accetta un solo parametro.Aggiunta del supporto per la console Linux nel terminale integrato, che consente l'I/O del terminale.
Aggiunta del supporto sperimentale iniziale per le primitive atomiche C11 (
<stdatomic.h>
). È possibile abilitare questa funzionalità sperimentale con l'opzione/experimental:c11atomics
in/std:c11
modalità o versione successiva.È stato aggiunto un nuovo set di controlli sperimentali ad alta confidenza al controllo della durata per ridurre il rumore.
Una nuova funzionalità di anteprima, Remote Esplora file, consente di visualizzare la directory dei file nei computer remoti all'interno di Visual Studio e di caricare e scaricare i file.
Modifica del controllo delle versioni degli eseguibili CMake forniti con Visual Studio in modo che corrispondano alle versioni di Kitware.
Aggiunta del supporto per Ricaricamento rapido al modello di progetto CMake.
Vai a definizione per C++ ora usa un indicatore più sottile dell'operazione che richiede più tempo, sostituendo il dialogo modale delle versioni precedenti.
È stata avviata l'implementazione di un esperimento che offre risultati più intelligenti nell'elenco di membri e completamento automatico C++. Questa funzionalità era precedentemente nota come IntelliSense predittiva, ma ora usa un nuovo metodo di presentazione.
Viene ora fornito un set di strumenti Clang Arm64 nativo con il carico di lavoro LLVM, consentendo la compilazione nativa nei computer Arm64.
Aggiunta della localizzazione all'estensione Image Watch (questa estensione è disponibile nel Marketplace e non è in bundle tramite il Programma di installazione di Visual Studio).
Aggiunta del supporto per l'apertura di una finestra del terminale nel contenitore per sviluppatori attualmente in esecuzione.
Sono stati apportati diversi miglioramenti all'espansione di macro IntelliSense. In particolare, è stata abilitata l'espansione ricorsiva in più contesti e sono state aggiunte opzioni al popup per copiare l'espansione negli Appunti o espandere la macro inline.
Il monitoraggio simultaneo è ora supportato in Monitoraggio seriale. Il monitoraggio simultaneo consente di monitorare più porte contemporaneamente. Premere il pulsante più per aprire un altro monitoraggio seriale e iniziare.
È ora possibile visualizzare le proprietà dalle classi di base modificate in un asset unreal Blueprint senza uscire da Visual Studio. Fare doppio clic in un riferimento progetto per una classe o una proprietà C++ per aprire Ue Asset Inspector in Visual Studio.
Abilitazione dell'esecuzione di DevContainers in un computer Linux remoto.
È stata abilitata la selezione di più destinazioni da compilare nella visualizzazione Destinazioni CMake.
Aggiunta del supporto per CMakePresets.json versione 5. Per informazioni sulle nuove funzionalità, vedere la documentazione di CMake.
Abilitazione di Esplora test per compilare e testare più destinazioni CMake in parallelo.
Aggiunta dell'opzione "Apri contenitore nel terminale" a Contenitori di sviluppo.
Implementazione delle funzionalità della libreria standard:
Novità di C++ in Visual Studio versione 17.4
Data di rilascio: novembre 2022
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.4 |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.4 |
Nuove funzionalità nell'IDE di Visual Studio 17.4 | Note sulla versione di Visual Studio 2022 versione 17.4 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.4 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Elenco parziale delle nuove funzionalità nella versione 17.4:
Sono stati migliorati i messaggi di errore del compilatore per fornire informazioni più corrette e utili, in particolare per i concetti.
Aggiunta dell'opzione sperimentale MSVC per l'output
/experimental:log<directory>
della diagnostica SARIF strutturata nella directory specificata.Aggiunta del supporto per gli attributi C23 a IntelliSense e avanzamento continuo nel supporto dei moduli C++20.
Miglioramento delle prestazioni di indicizzazione all'apertura di una nuova soluzione. I progetti di grandi dimensioni potrebbero vedere un miglioramento del 20-35% rispetto al 17,3.
Miglioramento dell'ottimizzazione dei valori restituiti denominati (NRVO):
- NrVO è abilitato per i casi che comportano la gestione delle eccezioni o i cicli.
- NrVO è abilitato anche in
/Od
se l'utente passa l'opzione/Zc:nrvo
o/std:c++20
versione successiva o/permissive-
. - È ora possibile disabilitare NRVO con l'opzione
/Zc:nrvo-
.
Aggiornata la versione di LLVM fornita con Visual Studio alla versione 15.0.1. Per altre informazioni su ciò che è disponibile, vedere le note sulla versione di LLVM e Clang .
Aggiunta del supporto a Visual Studio per artefatti vcpkg con progetti CMake. Per i progetti che includono un manifesto vcpkg, l'ambiente viene attivato automaticamente all'apertura del progetto. Altre informazioni su questa funzionalità sono disponibili nel post di blog relativo all'attivazione dell'ambiente vcpkg in Visual Studio .
È ora possibile usare i contenitori di sviluppo per i progetti C++. Altre informazioni su questa funzionalità sono disponibili nel post di blog Dev Containers for C++ (Contenitori di sviluppo per C++ ).
IntelliSense ora rispetta l'ordine delle intestazioni precluse quando uno di essi è un PCH. In precedenza, quando un PCH veniva usato tramite
/Yu
e incluso forzatamente tramite/FI
, IntelliSense lo elaborava sempre prima, prima di qualsiasi altra intestazione inclusa tramite/FI
. Questo comportamento non corrisponde al comportamento di compilazione. Con questa modifica,/FI
le intestazioni vengono elaborate nell'ordine in cui vengono specificate.Rimozione dei prefissi interni dai nomi CTest in Esplora test.
Aggiornamento della versione di CMake fornita con Visual Studio alla versione 3.24.1. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake.
Aggiornamento di Android SDK:
- Gli script Ant sono stati rimossi, quindi gli utenti non visualizzano più modelli basati su Ant nella finestra di dialogo Nuovo progetto. Per informazioni sulla migrazione da modelli Ant a modelli Gradle, vedere Migrazione di compilazioni da Apache Ant
- Aggiunta del supporto per la compilazione con NDK 23 e 24
- Aggiornamento del componente NDK alla versione LTS 23
Aggiunta di implementazioni vettorializzate di
ranges::min_element()
,ranges::max_element()
eranges::minmax_element()
Continuiamo a tenere traccia degli ultimi sviluppi della standardizzazione C++. Il supporto per queste funzionalità di C++23 è disponibile includendo
/std:c++latest
nelle opzioni del compilatore:string_view
P2499R0 costruttore di intervalli deve essereexplicit
auto(x)
P0849R8 : decadimento nella linguaLa parte del compilatore non è ancora implementata. La parte della libreria è stata implementata in modalità C++20 quando è stato implementato inizialmente il supporto degli intervalli.
ranges::iota
P2440R1 ,ranges::shift_left
,ranges::shift_right
Aggiunta di un'opzione "Navigazione dopo la creazione di dichiarazione/definizione" per consentire di scegliere il comportamento di spostamento della funzionalità Crea dichiarazione/definizione. È possibile scegliere tra la visualizzazione (impostazione predefinita) o l'apertura del documento o nessuna navigazione.
Le build arm64 di Visual Studio ora raggruppano le versioni arm64 di CMake e Ninja.
Aggiunta del supporto per I set di impostazioni di CMake versione 4. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake.
Le connessioni di sistema remote che usano il Gestione connessioni ora supportano proxy SSHJump. ProxyJump viene usato per accedere a un host SSH tramite un altro host SSH, ad esempio per accedere a un host dietro un firewall.
Novità di C++ in Visual Studio versione 17.3
Data di rilascio: agosto 2022
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Miglioramenti di C++ nella versione 17.3 |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.3 |
Nuove funzionalità nell'IDE di Visual Studio 17.3 | Note sulla versione di Visual Studio 2022 versione 17.3 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.3 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Elenco parziale delle nuove funzionalità nella versione 17.3:
- La toolchain Arm64EC non è più contrassegnata come sperimentale ed è pronta per l'uso in produzione.
- Il terminale di Visual Studio può ora essere usato come client SSH con le connessioni SSH archiviate. Dopo aver installato C++ per Linux Tools, aprire la finestra degli strumenti del terminale. L'elenco a discesa Terminale viene popolato con le connessioni archiviate. Quando si seleziona una connessione, viene aperta una nuova finestra terminale in Visual Studio che mostra uno pseudo-terminale nel sistema remoto. Sono supportati tutti i caratteri di controllo, i colori e la consapevolezza posizionale del cursore.
- Visual Studio può ora aggiungere modelli di classe Unreal Engine per i progetti UE. Per provare questa funzionalità, verificare che il supporto dell'IDE per Unreal Engine sia selezionato nel carico di lavoro Sviluppo di giochi con C++ nel Programma di installazione di Visual Studio. Quando si lavora a un progetto UE, fare clic con il pulsante destro del mouse nel progetto o in una cartella/filtro e scegliere Aggiungi>classe UE.
- Passare a Definizione ora memorizza la firma precedente e si sposta di conseguenza quando una corrispondenza migliore non è disponibile( ad esempio, dopo aver modificato manualmente la firma di una coppia). La velocità di risposta di Go To All è migliorata. In precedenza, i risultati venivano visualizzati dopo l'interruzione della digitazione. Nella nuova esperienza i risultati vengono visualizzati durante la digitazione.
- Nei contesti che richiedono
enum
il completamento dei tipi (ad esempio, assegnazioni aenum
variabili, etichette case, tipo restituitoenum
e così via), l'elenco di completamento automatico viene ora filtrato in base ai soli enumeratori e costrutti correlati corrispondenti. - Aggiunta del supporto nuGet PackageReference per i progetti MSBuild C++/CLI destinati a .NET Core. Questa modifica è stata apportata per sbloccare codebase miste dalla possibilità di adottare .NET Core. Questo supporto non funziona per altri tipi di progetto C++ o per i tipi di progetto C++ destinati a .NET Framework. Non sono previsti piani per estendere il supporto packageReference ad altri scenari C++. Il team sta lavorando a esperienze separate che coinvolgono vcpkg per scenari non MSBuild e per aggiungere funzionalità maggiori.
- È stata aggiunta una finestra monitoraggio seriale per lo sviluppo incorporato, disponibile tramite Debug>di Monitoraggio seriale di Windows.>
- Indicizzazione C++ migliorata del 66% rispetto a 17,2.
- Aggiornamento della versione di CMake fornita con Visual Studio alla versione 3.23. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di CMake 3.23.
- Aggiornamento delle versioni degli strumenti LLVM fornite con Visual Studio alla versione 14. Per informazioni dettagliate su ciò che è disponibile, vedere le note sulla versione di LLVM e Clang .
- Aggiornamento del set di strumenti C++ di Dev 16.11 side-by-side alla versione 14.29.30145.00. La versione più recente del set di strumenti C++ di Dev 16.11 contiene importanti correzioni di bug, inclusa la correzione di tutti i report dei difetti C++20 rimanenti. Per altre informazioni sulle correzioni di bug, inclusi i report sui difetti di C++20 in Dev 16.11, vedere Note sulla versione di Visual Studio 2019 versione 16.11.14.
- Sono stati apportati vari miglioramenti all'esperienza nell'editor dei moduli C++. Stiamo lavorando costantemente per migliorare la qualità dell'esperienza, ma incoraggiamo a provarli nella versione 17.3. Segnalare i problemi rimanenti tramite la community degli sviluppatori.
Novità di C++ in Visual Studio versione 17.2
Data di rilascio: maggio 2022
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Visual Studio 2022 17.2 è ora disponibile |
Libreria standard (STL) unita a report di difetto C++20, funzionalità C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.2 |
Nuove funzionalità nell'IDE di Visual Studio 17.2 | Note sulla versione di Visual Studio 2022 versione 17.2 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.2 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Elenco parziale delle nuove funzionalità nella versione 17.2:
- Aggiunta del supporto del compilatore per la deduplicazione delle funzionalità C++23, disponibile nell'opzione
/std:c++latest
.this
- Aggiunta del supporto di IntelliSense per le funzionalità C++23 che
this
deducono eif consteval
. - Aggiunta del supporto per il nome del parametro inline e l'hint di tipo, attivati premendo ALT+F1 o toccando due volte CTRL. Questo comportamento può essere personalizzato in Strumenti > Opzioni > Editor > di testo C/C++ > IntelliSense.
- Aggiunta del supporto sperimentale per i moduli C++20 nei progetti CMake. Questo supporto è attualmente disponibile solo con il generatore di Visual Studio (MSBuild).
- Nella versione 17.1 sono state introdotte le visualizzazioni RTOS e registro periferiche per sviluppatori incorporati. Continuiamo a migliorare le funzionalità di queste visualizzazioni con miglioramenti dell'usabilità nella versione 17.2:
- La finestra degli strumenti RTOS è ora nascosta per impostazione predefinita. Impedisce la visualizzazione di una finestra degli strumenti con messaggi di errore non pertinenti quando non si usa un RTOS.
- Quando si fa doppio clic su un oggetto RTOS nella finestra degli strumenti, viene aggiunto un controllo per l'oggetto .
- Quando si selezionano i valori iniziale e finale per il puntatore dello stack nella finestra degli strumenti RTOS, viene aperto nella finestra della memoria.
- Aggiunta della consapevolezza del thread per le destinazioni del dispositivo alla finestra dello stack di chiamate.
- Gli utenti possono ora selezionare un'icona a forma di puntina accanto a periferiche, registri o campi per aggiungerli nella parte superiore della visualizzazione periferica.
- Sono state aggiunte implementazioni dei report dei difetti di C++20 rimanenti (noti anche come backport). Tutte le funzionalità di C++20 sono ora disponibili nell'opzione
/std:c++20
. Per altre informazioni sui backport implementati, vedere il progetto C++20 Defect Reports nel repository GitHub Microsoft/STL e il post di blog STL Completes/std:c++20
di MSVC. - Sono state aggiunte varie funzionalità della libreria C++23, disponibili nell'opzione
/std:c++latest
. Per altre informazioni sulle nuove funzionalità, vedere il log delle modifiche del repository STL. - Miglioramento delle prestazioni dell'indicizzazione C++ iniziale fino al 20%, a seconda della profondità del grafico di inclusione.
Novità di C++ in Visual Studio versione 17.1
Data di rilascio: febbraio 2022
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Visual Studio 2022 17.1 è ora disponibile. |
Funzionalità unite della libreria standard C++23, risoluzione dei problemi LWG, miglioramenti delle prestazioni, comportamento avanzato e bug corretti | Log modifiche STL 17.1 |
Nuove funzionalità nell'IDE di Visual Studio 17.1 | Note sulla versione di Visual Studio 2022 versione 17.1 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.1 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 |
Elenco parziale delle nuove funzionalità nella versione 17.1:
- Viene aggiunto un nuovo modello Configura set di impostazioni per configurare e compilare progetti CMake in un sistema macOS remoto con
CMakePresets.json
. È anche possibile avviare le destinazioni CMake in un sistema macOS remoto e quindi eseguire il debug in remoto nel debugger di Visual Studio supportato da GDB o LLDB. - È ora possibile eseguire il debug dei dump di core in un sistema macOS remoto da Visual Studio con LLDB o GDB.
- Le versioni di
Clang
eLLVM
fornite con Visual Studio vengono aggiornate alla versione 13. - L'integrazione CMake di Visual Studio è attiva solo quando un
CMakeLists.txt
oggetto viene identificato nella radice dell'area di lavoro aperta. Se unCMakeLists.txt
oggetto viene identificato a un altro livello dell'area di lavoro, viene richiesto di attivare l'integrazione CMake di Visual Studio con una notifica. - Nuove visualizzazioni che consentono di controllare e interagire con i registri delle periferiche su microcontroller e oggetti RTOS (Real Time Operating Systems), disponibili tramite Debug>dei registri incorporati di Windows>
- È stata aggiunta una nuova visualizzazione thread per i progetti RTOS, disponibile tramite Debug>di oggetti RTOS di Windows.> Per altre informazioni, vedere Embedded Software Development in Visual Studio.
Novità di C++ in Visual Studio versione 17.0
Data di rilascio: novembre 2021
Per ulteriori informazioni su | Vedere |
---|---|
Nuove funzionalità nell'IDE di Visual Studio 17.0 | Note sulla versione di Visual Studio 2022 versione 17.0 |
Libreria standard (STL) ha unito le funzionalità C++23 e C++26, i report dei difetti C++20, le risoluzioni dei problemi LWG, i miglioramenti delle prestazioni, il comportamento avanzato e i bug corretti | Log delle modifiche STL 17.0 |
Miglioramenti della conformità del linguaggio C++ in Visual Studio 2022 17.0 | Miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.10 |
Panoramica di alcune delle nuove funzionalità di Visual Studio 2022 versione 17.0:
- L'IDE di Visual Studio,
devenv.exe
, è ora un'applicazione nativa a 64 bit. - Il set di strumenti MSVC ora usa l'hashing dell'origine SHA-256 nei record di debug. In precedenza, il set di strumenti usa MD5 per l'hashing di origine per impostazione predefinita.
- Gli strumenti di compilazione v143 sono ora disponibili tramite il programma di installazione di Visual Studio e negli strumenti di compilazione autonomi.
Ricaricamento rapido per C++ nativo
- Ricaricamento rapido per C++ consente di apportare molti tipi di modifiche al codice all'app in esecuzione e applicarle senza dover sospendere l'esecuzione dell'app con un punto di interruzione simile a un punto di interruzione.
In Visual Studio 2022, quando si avvia l'app nel debugger, è possibile usare il pulsante Ricaricamento rapido per modificare l'applicazione mentre è ancora in esecuzione. Questa esperienza è basata su modifica e continuazione nativa. Per altre informazioni sulle modifiche supportate, vedere Modifica e continuazione (C++).
- Ricaricamento rapido supporta i progetti CMake e Open Folder.
Supporto di WSL2
- È ora possibile compilare ed eseguire il debug in modo nativo in WSL2 senza stabilire una connessione SSH. Sono supportati entrambi i progetti CMake multipiattaforma e i progetti Linux basati su MSBuild.
Supporto migliorato di CMake
Aggiornata la versione di CMake fornita con Visual Studio alla versione 3.21. Per altre informazioni sulle funzionalità disponibili in questa versione, vedere le note sulla versione di CMake 3.21.
Le pagine di panoramica di CMake vengono aggiornate per supportare
CMakePresets.json
.È ora possibile configurare e compilare i progetti CMake con CMake 3.21 e
CMakePresets.json
v3.Visual Studio supporta ora l'opzione
buildPresets.targets
inCMakePresets.json
. Questa opzione consente di compilare un subset di destinazioni nel progetto CMake.Il menu Progetto nei progetti CMake è semplificato ed espone le opzioni "Elimina cache e riconfigura" e "Visualizza cache".
Implementazione dell'opzione del
/scanDependencies
compilatore per elencare le dipendenze del modulo C++20 per i progetti CMake, come descritto in P1689R5. Si tratta di un passo verso il supporto per la compilazione di progetti basati su moduli con CMake e stiamo lavorando per completare questo supporto nelle versioni successive.
Miglioramenti della libreria standard
Selezionare Miglioramenti della libreria standard (STL) evidenziati qui. Per un elenco completo delle nuove funzionalità, modifiche, correzioni di bug e miglioramenti delle prestazioni, vedere il log delle modifiche del team STL.
- Sono stati aggiunti visualizzatori di debug per migliorare la visualizzazione dei tipi seguenti: , , (e i relativi iteratori),
default_sentinel_t
, ,ranges::single_view
unreachable_sentinel_t
ranges::iota_view
ranges::empty_view
(e il relativo iteratore/sentinel),ranges::ref_view
, ,thread::id
jthread
thread
, , eu8string
bind_front()
source_location
filesystem::path
- Aggiunta
[[nodiscard]]
allastoi()
famiglia di funzioni in<string>
e a varie funzioni in<locale>
come lecollate
funzioni membro,has_facet()
e leisalnum()
famiglie etolower()
. - P0980R1 made
std::string
constexpr
in VS 2019 16.10. Ora supportato per Clang. - P1004R2 made
std::vector
constexpr
in VS 2019 16.10. Ora supportato per Clang.
Funzionalità evidenziate di C++23
- P1048R1 Aggiunta
is_scoped_enum
di , un nuovo tratto per la libreria standard C++, che rileva se un tipo è un'enumerazione con ambito. -
out_ptr()
P1132R7 ,inout_ptr()
-
contains()
P1679R3 Forbasic_string
ebasic_string_view
-
to_underlying()
P1682R3 per le enumerazioni - P2162R2 Consenti l'ereditarietà da
std::variant
- P2166R1 Proibire la
basic_string
costruzione ebasic_string_view
danullptr
. Questa modifica è una modifica che causa un'interruzione di origine. Il codice che in precedenza aveva un comportamento non definito in fase di esecuzione viene ora rifiutato con errori del compilatore. - P2186R2 Supporto di Garbage Collection rimosso. Questa modifica rimuove
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
,get_pointer_safety
. In precedenza, queste funzioni non avevano alcun effetto.
Miglioramenti delle prestazioni evidenziati
<format>
ora rileva quando scrive in un oggetto per unback_insert_iterator
basic_string
oggetto o evector
esegue una chiamata più veloce ainsert()
in corrispondenzaend()
del contenitore.- Sono stati migliorate le prestazioni di
std::find()
estd::count()
pervector<bool>
19x e 26x (volte, non per cento). - Abbiamo migliorato le prestazioni di
std::count()
pervector<bool>
std::byte
ora ha le stesse prestazioni diunsigned char
inreverse()
evariant::swap()
Supporto di Clang e LLVM
Gli strumenti LLVM forniti con Visual Studio vengono aggiornati a LLVM 12. Per altre informazioni, vedere le note sulla versione di LLVM.
Il supporto Clang-cl è stato aggiornato a LLVM 12.
È ora possibile eseguire il debug dei processi in esecuzione in un sistema remoto da Visual Studio usando LLDB.
C++ AMP deprecato
- Le intestazioni C++ AMP sono ora deprecate. L'inclusione
<amp.h>
in un progetto C++ genera errori di compilazione. Per disattivare gli errori, definire_SILENCE_AMP_DEPRECATION_WARNINGS
. Per altre informazioni, vedere i collegamenti di deprecazione AMP.
Miglioramenti di IntelliSense
- Sono stati apportati miglioramenti in IntelliSense C++ quando si fornisce l'evidenziazione della navigazione e della sintassi per i tipi da moduli importati e unità di intestazione. IntelliSense è un'area attiva di investimenti per noi. Aiutaci a migliorare: condividi i tuoi commenti e suggerimenti sulla community degli sviluppatori usando l'aiuto per>inviare commenti e suggerimenti.
- Sono stati migliorate le prestazioni di IntelliSense C++ ottimizzando l'utilizzo delle intestazioni memorizzate nella cache e l'accesso al database dei simboli, offrendo tempi di caricamento migliorati per accedere al codice.
- Linter del codice IntelliSense per C++ è ora attivo per impostazione predefinita, fornendo suggerimenti istantanei di tipo you-type e suggerimenti per correggere i difetti comuni del codice.
- IntelliSense C++ per i progetti CMake ora funziona quando si usa un set di impostazioni con un nome visualizzato.
Aggiornamenti del carico di lavoro C++
- Aggiornato a NDK r21 LTS nel carico di lavoro Sviluppo di applicazioni mobili C++.
- Il carico di lavoro Sviluppo di giochi con C++ installa ora l'ultimo motore Unreal con supporto per Visual Studio 2022.
Miglioramenti dell'analisi del codice
- L'analisi del codice applica ora che restituisce valori di funzioni annotate con
_Check_return_
o_Must_inspect_result_
devono essere controllate. - Il rilevamento della dereferenziazione puntatore Null è migliorato negli strumenti di analisi del codice.
- Aggiunta del supporto per
gsl::not_null
l'analisi del codice. - Supporto per Libfuzzer nell'opzione del
/fsanitize=fuzzer
compilatore.
Note sulla versione per le versioni precedenti
Sono disponibili anche le note sulla versione per le versioni precedenti di C++:
- Per informazioni sulle novità di C++ in Visual Studio 2019, vedere Novità di C++ in Visual Studio 2019.
- Per informazioni sulle novità per C++ in Visual Studio 2017, vedere Novità di C++ in Visual Studio 2017.
- Per informazioni sulle novità delle versioni precedenti, vedere Novità di Visual C++ da 2003 a 2015.
Problemi noti
C++ IntelliSense
Per altre informazioni su altri problemi aperti e sulle soluzioni alternative disponibili per C++ in Visual Studio 2022, vedere l'elenco dei problemi della community degli sviluppatori C++.
Feedback e suggerimenti
Ci piacerebbe sapere cosa ne pensi! È possibile segnalare un problema o suggerire una funzionalità usando l'icona Invia commenti e suggerimenti nell'angolo in alto a destra del programma di installazione o dell'IDE di Visual Studio o dall'invio>di commenti e suggerimenti. È possibile tenere traccia dei problemi usando Visual Studio Developer Community, in cui si aggiungono commenti o si trovano soluzioni. È anche possibile usufruire gratuitamente del supporto per l'installazione con Assistenza live chat.
Blog
Sfruttare le informazioni dettagliate e le raccomandazioni disponibili nel sito Blog per sviluppatori Microsoft per rimanere aggiornati su tutte le nuove versioni. I blog includono post approfonditi su un'ampia gamma di funzionalità. Il blog del team C++ e il blog di Visual Studio sono di particolare interesse.