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.13
Rilasciata a febbraio 2025
Per ulteriori informazioni su | Vedere |
---|---|
Novità per gli sviluppatori C++ | Novità per gli sviluppatori C++ in Visual Studio 2022 17.13 |
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 | registro delle modifiche STL 17.13 |
Nuove funzionalità nell'IDE | Note sulla versione 17.13 di Visual Studio 2022 |
Aggiornamenti del linguaggio C++ | aggiornamenti del compilatore MSVC in Visual Studio 2022 17.13 |
Miglioramenti della conformità del linguaggio C++ | miglioramenti della conformità C++, modifiche del comportamento e correzioni di bug in Visual Studio 2022 17.13 |
Una rapida evidenziazione di alcune delle nuove funzionalità:
miglioramenti del linguaggio C++
Provare le funzionalità di anteprima di C++23 impostando C++ Language Standard su
/std:c++23preview
. Questa impostazione abilita le funzionalità e le correzioni di bug più recenti di C++23. Per altre informazioni, vedere /std (Specifica versione standard del linguaggio).Supporto per il suffisso
size_t
di C++23, che consente di evitare troncamenti o incongruenze di confronto con segno, in particolare nella scrittura dei cicli. Ad esempio:// Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) { ... } // Fixed because of uz literal for (auto i = 0uz; i < v.size(); ++i) { ... }
Supporto per le lunghezze vettoriali per la generazione di codice in x86 e x64. Per altre informazioni, vedere /vlen.
Supporto per Intel Advanced Vector Extensions 10 versione 1. Per altre informazioni su
/arch:AVX10.1
, vedere /arch (x64).
miglioramenti della libreria standard
Supporto della libreria standard per le couroutine. In questo esempio da P2502R2, la funzione
fib
è una coroutine. Quando viene eseguita l'istruzioneco_yield
,fib
viene sospesa e il valore viene restituito al chiamante. È possibile riprendere la coroutinefib
in un secondo momento per produrre più valori senza richiedere alcuna gestione manuale dello stato:std::generator<int> fib() { auto a = 0, b = 1; while (true) { co_yield std::exchange(a, std::exchange(b, a + b)); } } int answer_to_the_universe() { auto rng = fib() | std::views::drop(6) | std::views::take(3); return std::ranges::fold_left(std::move(range), 0, std::plus{}); }
Spostato
system_clock
,high_resolution_clock
echrono_literals
da un'intestazione interna comunemente inclusa in<chrono>
. Se vengono visualizzati errori del compilatore comesystem_clock
o valori letterali definiti dall'utente come1729ms
non vengono riconosciuti, includere<chrono>
.Sono stati migliorati le implementazioni vettorializzate dei costruttori di
bitset
da stringhe,basic_string::find_last_of()
,remove()
,ranges::remove
e le famiglie di algoritmiminmax_element()
eminmax()
.Sono state aggiunte implementazioni vettorializzate di:
-
find_end()
eranges::find_end
per gli elementi a 1 byte e 2 byte. -
basic_string::find()
ebasic_string::rfind()
per una sottostringa. -
basic_string::rfind()
per un singolo carattere.
-
Report consolidati dei difetti di C++23:
GitHub Copilot
GitHub Copilot Free è ora disponibile. Ottenere 2.000 completamenti di codice e 50 richieste di chat al mese senza costi.
I completamenti di codice di GitHub Copilot forniscono suggerimenti di auto-completamento mentre scrivi il codice. Per migliorare l'esperienza degli sviluppatori C++, GitHub Copilot include altri file pertinenti come contesto. Ciò riduce le allucinazioni offrendo suggerimenti più pertinenti e accurati.
È ora possibile richiedere una revisione del codice da GitHub Copilot dalla finestra Modifiche Git:
La finestra Modifiche Git è aperta con il pulsante GitHub Copilot Review evidenziato.
GitHub Copilot cerca potenziali problemi e crea commenti per loro:
GitHub Copilot ha rilevato un problema con la riga `if (is_enabled_) new_site.disable()`. Si dice che potrebbe essere un errore e dovrebbe probabilmente essere if( is_enabled_) new_site.enable() perché l'intenzione è quella di abilitare il nuovo sito se il breakpoint è abilitato.
Per usare questa funzionalità, assicurarsi di avere attivato quanto segue:
- Strumenti>Opzioni>Funzionalità di anteprima>Commenti della richiesta pull
- Strumenti>Opzioni>GitHub>Copilot>Integrazione del controllo del codice sorgente>Abilita funzionalità di anteprima Git.
Le modifiche di GitHub Copilot sono una nuova funzionalità che può apportare modifiche tra più file nel progetto. Per avviare una nuova sessione di modifica, fare clic su Crea nuova sessione di modifica nella parte superiore della finestra Di chat di GitHub Copilot:
Descrivere le modifiche da apportare e Copilot suggerisce le modifiche pertinenti. È possibile visualizzare in anteprima le modifiche una alla volta e accettare quelle desiderate o apportare correzioni:
GitHub Copilot visualizza un riepilogo delle modifiche apportate, ad esempio 1. Creare una nuova sottoclasse range_breakpoint in include/libsdb/breakpoint.hpp" e 2. Implementare la classe range_breakpoint in src/breakpoint.cpp. Viene visualizzata un'opzione per accettare le modifiche.
Per ulteriori informazioni, consultare Iterare tra più file in modo più efficiente con modifiche di GitHub Copilot.
CMake
- Supporta ora I set di impostazioni di CMake v9. Nuove espansioni di macro nel campo di inclusione di una preimpostazione. Per ulteriori informazioni, vedere Espansione macro nella documentazione ufficiale di CMake.
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 completata degli intervalli di formattazione C++23 (P2286R8). Aggiunti i formattatori per gli adattatori contenitore
stack
,queue
epriority_queue
. - Aggiunta di operatori di pedice multidimensionale, che supportano anche
<mdspan>
. Ad esempio:print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- Implementazione completata degli intervalli di formattazione C++23 (P2286R8). Aggiunti i formattatori per gli adattatori contenitore
-
Sviluppo di giochi in C++
- Aprire direttamente i progetti di Unreal Engine in Visual Studio senza dover generare un file di soluzione di Visual Studio che avvolge il progetto di 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 ulteriori 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 nell'Esplora soluzioni, fare clic con il pulsante destro del mouse e scegliere Esegui Analisi di Compilazione sui File Selezionati: Screenshot dei file nell'Esplora soluzioni. Il menu di scelta rapida è aperto e l'opzione Esegui Analisi di Compilazione sui File Selezionati è evidenziata.
- È 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 per visualizzare una breve descrizione delle schede nella finestra 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 la variabileIl codice che ha causato questo problema è: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).
it
, indica 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 tuo programma, si deve scorrere il vettore animals_ nell'oggetto house per contare il numero di oggetti di tipo cat. Perché è nullo. 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 it <= 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 in cui unique_ptr tenta di fare riferimento a una funzione eliminata.
Il messaggio di Copilot afferma: "L'errore si verifica perché il ciclo for basato sull'intervallo stava tentando di copiare oggetti std::unique_ptr, cosa non consentita poiché std::unique_ptr non può essere copiato. 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 itera sui riferimenti agli oggetti std::unique_ptr, il che è consentito.
-
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
- Ora l'implementazione dell'output formattato include
std::range_formatter
e i formattatori perstd::pair
estd::tuple
. - È stato aggiunto il 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()
,replace_copy_if()
ranges::replace_copy
,ranges::replace_copy_if
find_first_of()
eranges::find_first_of
, per elementi a 8 bit e a 16 bit, ,mismatch()
ranges::mismatch
count()
ranges::count
find()
ranges::find
,ranges::find_last
e .ranges::iota
- Ora 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 ulteriori informazioni, vedere Aggiungere classi, moduli e plug-in in Unreal Engine su 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 dei File inclusi è migliorato.
La sezione dei File inclusi ha 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, imposta un punto di interruzione nelCMakeLists.txt
file e quindi passa a Progetto>Configura cache con il debug di 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>
su unstd::tuple
che ha più istanze diT
nella lista degli argomenti del modello. MSVC era utilizzato 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 era solito 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 state migliorate le implementazioni vettorializzate distd::min_element
,std::ranges::min
e amici. - Informazioni sulla Compilazione: ora fornisce informazioni sulla creazione di istanze del modello. Vedere la visualizzazione modelli per le Informazioni dettagliate sulla compilazione in Visual Studio o la registrazione Pure Virtual C++ - visualizzazione modelli per Build Insights in Visual Studio.
- Plug-in Unreal Engine: È disponibile una nuova funzionalità opzionale per consentire al plug-in Unreal Engine di funzionare 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.
- Target CMake: è ora possibile fissare i target nella Vista Target CMake.
- UX del Gestore di Connessioni: l'esperienza utente offre un'esperienza più fluida 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 tuo file di lavoro. Abilita il flag di funzionalità, Commenti delle richieste pull in Opzioni>Ambiente>Funzionalità di anteprima ed esegui 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. Prova cliccando sull'icona a forma di penna scintillante Aggiungi descrizione della 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 pixel di larghezza e altezza.
Il puntatore del mouse è posizionato sulla riga std::filesystem::path 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/punti di tracciamento: è ora possibile creare punti di interruzione condizionali o punti di tracciamento direttamente dalle espressioni nel codice sorgente attraverso il menu contestuale. 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 del processo: La funzionalità fornita da questa finestra di dialogo è più intuitiva. È 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 |
La libreria standard (STL) ha integrato le funzionalità di C++23, con miglioramenti delle prestazioni, comportamento migliorato, risoluzione dei problemi LWG e bug corretti. | Changelog 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
diagnostici, che forniscono un'analisi dettagliata delle#include
direttive. Attivare questa funzionalità facendo clic con il pulsante destro del mouse su un elemento#include
e scegliendo directive #include>Attiva diagnostica direttiva #include. Sopra ogni#include
è il numero di volte in cui il codice fa riferimento a tale#include
file. Fare clic sul link di riferimento per spostarsi nel punto in cui il codice utilizza un elemento di quel file di intestazione. Per visualizzare il tempo di costruzione delle#include
direttive, eseguire Build Insights navigando su Build>Run Build Insights on Solution>Build.Sopra # include c'è un collegamento di riferimento e molti dei riferimenti a questo file # include (in questo caso, uno). 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. Passa il puntatore su un tipo e scegli il collegamento Layout di Memoria in Info 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. Esibisce gli offset di memoria dei vari campi della classe, come le classi Point per indicare 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 Strumenti>Opzioni e selezionare CMake>Generale. Selezionare Abilita eseguibile CMake personalizzato e specificare il percorso nel quale si trova l'eseguibile CMake.
La finestra di dialogo delle opzioni di 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
estd::span
formattable
,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 delle modifiche STL 17.8 |
Nuove funzionalità nell'IDE di Visual Studio 17.8 | Note sulla versione 17.8 di Visual Studio 2022 |
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 ulteriori informazioni, consultare Output strutturato SARIF e Finestra Dettagli Problema.
- 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. Passando il puntatore del mouse sull'identificatore, vengono visualizzate le informazioni sulle dimensioni e sull'allineamento.
- Funzionalità che suggerisce quando contrassegnare le funzioni membro
const
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 include oscurato e usare il menu lampadina per rimuovere quell'include o tutte le inclusioni inutilizzate. È possibile anche aggiungere direttive
#include
per le entità incluse indirettamente tramite altri header. Per ulteriori informazioni, consultare Ripulire le inclusioni C/C++ in Visual Studio. - Maggior supporto per Unreal Engine
- 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, puoi trovare costrutti comuni di Unreal Engine come frammenti 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 ulteriori informazioni, vedere Esercitazione: Risolvere i problemi di inlining delle funzioni sui tempi di compilazione e Esercitazione: Risolvere l'impatto del file di intestazione sui tempi di compilazione.
- Il supporto per i unit test su Linux remoto consente ora di eseguire i test CTest e GTest sui computer Linux remoti dall'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++ |
"Il C++23 è stato integrato nella Libreria Standard (STL) con nuove caratteristiche, risoluzione delle questioni LWG, miglioramenti delle prestazioni, comportamento migliorato e correzione di bug." | Registro delle modifiche STL 17.7 |
Nuove funzionalità nell'IDE di Visual Studio 17.7 | Note sulla versione 17.7 di Visual Studio 2022 |
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
- Approfondimenti sui processi di build in C++ per lo sviluppo di giochi
- Aggiunto
/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 Blueprint di Unreal Engine 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 |
La Libreria Standard (STL) ha incorporato le funzionalità di C++23, ha risolto le problematiche LWG, ha migliorato le prestazioni, ha migliorato il comportamento e ha corretto i bug. | Registro delle modifiche STL 17.6 |
Nuove funzionalità nell'IDE di Visual Studio 17.6 | Note sulla versione di Visual Studio 2022 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 di Unreal Engine
- 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 | Changelog STL 17.5 |
Nuove funzionalità nell'IDE di Visual Studio 17.5 | Note di rilascio 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 "named cast" che causano un sovraccarico non necessario nelle build di debug./permissive-
(o un'opzione che la implica, ad esempio/std:c++20
ostd:c++latest
) è obbligatoria.Aggiunto
[[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 affidabilità allo strumento di verifica della durata per ridurre il rumore.
Una nuova funzionalità di anteprima, Remote File Explorer, consente di visualizzare la directory dei file sui computer remoti all'interno di VS, e di caricare e scaricare file da essa.
Cambiata la versione degli eseguibili CMake forniti con Visual Studio per corrispondere alle versioni di Kitware.
Aggiunta del supporto per Ricaricamento rapido al modello di progetto CMake.
"Vai a definizione" per C++ ora utilizza un segnalatore più sottile per indicare che l'operazione richiede più tempo, sostituendo il dialogo modale delle versioni precedenti.
È iniziato il rollout di un esperimento che fornisce risultati più intelligenti nell'autocompletamento C++ e nella lista dei membri. 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 localizzazione all'estensione Image Watch (questa estensione è disponibile nel Marketplace e non è inclusa tramite il Programma di installazione di Visual Studio).
Aggiunto il supporto per aprire una finestra del terminale nel contenitore per sviluppatori attualmente in esecuzione.
Sono stati apportati diversi miglioramenti all'espansione delle macro di 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 in linea.
Il monitoraggio simultaneo è ora supportato in Monitoraggio seriale. Il monitoraggio simultaneo consente di monitorare più porte contemporaneamente. Premere il pulsante plus per aprire un altro Monitor 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 Blueprint 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.
Ha abilitato Esplora Test per compilare e testare più obiettivi 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 17.4 di Visual Studio 2022 |
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 l'opzione sperimentale MSVC
/experimental:log<directory>
per generare 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 con
/Od
se l'utente passa l'opzione/Zc:nrvo
o/std:c++20
o versioni successive, 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 gli artefatti di 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 preincluse quando una di queste è 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 corrispondeva al comportamento di build. Con questa modifica, le intestazioni/FI
vengono elaborate nell'ordine in cui vengono specificate.Rimossi i 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 di rilascio 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
- Aggiunto supporto per la compilazione con il 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:P2302R4
ranges::contains
,ranges::contains_subrange
P2499R0
string_view
Il 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.
P2301R1 aggiungere un
pmr
alias astd::stacktrace
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.
Aggiunto supporto per i preset di CMake versione 4. Per informazioni dettagliate su ciò che è disponibile, vedere le note di rilascio di CMake.
Le connessioni di sistema remote che usano il Gestore delle connessioni ora supportano SSH ProxyJump. 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 |
Libreria standard (STL) arricchita con le funzionalità di C++23, risoluzione delle questioni LWG, miglioramenti delle prestazioni, comportamento migliorato e bug corretti. | Log modifiche STL 17.3 |
Nuove funzionalità nell'IDE di Visual Studio 17.3 | Note di rilascio 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. Il menu a discesa Terminale viene riempito 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.
- Vai alla Definizione ora ricorda la firma precedente e si sposta di conseguenza quando una corrispondenza migliore non è disponibile (ad esempio, dopo aver modificato manualmente la firma di uno della 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 del Monitor seriale per lo sviluppo embedded, disponibile tramite Debug>Windows>Serial Monitor.
- 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 ulteriori informazioni sulle correzioni di bug, inclusi i report sui difetti di C++20 in Dev 16.11, vedere le note di rilascio 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 | Vedi |
---|---|
Novità per gli sviluppatori C++ | Visual Studio 2022 17.2 è ora disponibile |
Libreria Standard (STL) ha incorporato report sui difetti di C++20, funzionalità C++23, risoluzioni dei problemi LWG, miglioramenti delle prestazioni, comportamento migliorato e correzione di bug. | Registro delle modifiche STL 17.2 |
Nuove funzionalità nell'IDE di Visual Studio 17.2 | Note di rilascio 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:
- Aggiunto supporto del compilatore per la funzionalità di deduzione
this
, disponibile con l'opzione/std:c++latest
. - Aggiunta del supporto di IntelliSense per le funzionalità C++23 che
this
deducono eif consteval
. - Aggiunto supporto per il nome del parametro inline e il suggerimento di tipo, attivati premendo Alt+F1 o premendo 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, abbiamo introdotto la visualizzazione del registro periferico e del RTOS per gli sviluppatori embedded. 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 monitoraggio per l'oggetto.
- Quando si selezionano i valori di inizio e fine per il puntatore dello stack nella finestra dello strumento RTOS, si apre nella finestra della memoria.
- Aggiunto il supporto dei thread per le destinazioni del dispositivo nella finestra di visualizzazione 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 bug di C++20 rimanenti (noti anche come backport). Tutte le funzionalità di C++20 sono ora disponibili nell'opzione
/std:c++20
. Per ulteriori informazioni sui backport implementati, vedere il changelog di VS 2022 nel repository GitHub Microsoft/STL e nel post di blog/std:c++20
sul completamento dello STL di MSVC . - Sono state aggiunte varie funzionalità della libreria C++23, disponibili nell'opzione
/std:c++latest
. Per ulteriori informazioni sulle nuove funzionalità, consultare il registro 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. |
La libreria standard (STL) ha unito le funzionalità di C++23, risolto questioni LWG, migliorato le prestazioni, migliorato i comportamenti e corretto bug | Registro delle modifiche STL 17.1 |
Nuove funzionalità nell'IDE di Visual Studio 17.1 | Note sulla versione 17.1 di Visual Studio 2022 |
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 di configurazione predefinita per configurare e compilare progetti CMake su 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 ispezionare e interagire con i registri delle periferiche su microcontroller e oggetti dei sistemi operativi in tempo reale (RTOS), disponibili tramite Debug, Finestre, Registri Incorporati.
- È stata aggiunta una nuova visualizzazione del thread per i progetti RTOS, accessibile tramite Debug>Windows>RTOS Objects. 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. - Lo strumento MSVC ora utilizza l'hashing del codice sorgente SHA-256 nei record di debug. In precedenza, la strumentazione usava MD5 per l'hashing del codice sorgente 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
- Hot Reload per C++ consente di apportare molti tipi di modifiche al codice della tua app in esecuzione e applicarle senza dover sospendere l'esecuzione dell'app, come avviene con 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 è alimentata da Edit and Continue nativo. Per altre informazioni sulle modifiche supportate, vedere Modifica e continuazione (C++).
- Hot Reload 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 costruire un sottoinsieme di obiettivi 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
Miglioramenti selezionati della libreria standard (STL) sono 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),
source_location
, ,bind_front()
u8string
default_sentinel_t
unreachable_sentinel_t
(e il relativo iteratore/sentinel),ranges::empty_view
, ,ranges::single_view
ranges::iota_view
ranges::ref_view
, , ethread
thread::id
jthread
filesystem::path
- Aggiunto
[[nodiscard]]
alla famiglia di funzionistoi()
in<string>
e a varie funzioni in<locale>
, come le funzioni membrocollate
,has_facet()
, e le famiglieisalnum()
etolower()
. -
P0980R1 realizzato
std::string
constexpr
in VS 2019 16.10. Ora supportata per Clang. -
P1004R2 fatto
std::vector
constexpr
in VS 2019 16.10. Ora supportato per Clang.
Funzionalità evidenziate di C++23
- P1048R1 Aggiunto
is_scoped_enum
, un nuovo tratto per la libreria standard C++ che rileva se un tipo è un'enumerazione con ambito. -
P1132R7
out_ptr()
,inout_ptr()
-
contains()
P1679R3 perbasic_string
ebasic_string_view
-
to_underlying()
P1682R3 per le enumerazioni -
P2162R2 Consenti l'ereditarietà da
std::variant
-
P2166R1 Proibire la costruzione di
basic_string
ebasic_string_view
danullptr
. Questa modifica interrompe il codice sorgente. Il codice che in precedenza aveva un comportamento non definito in fase di esecuzione viene ora rifiutato con errori del compilatore. -
P2186R2 Rimosso il supporto per la garbage collection. 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 sta scrivendo in unback_insert_iterator
o in unbasic_string
per unvector
, ed esegue una chiamata più veloce ainsert()
all'inizio del contenitoreend()
. - 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 ulteriori informazioni, consulta le note di rilascio 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 è stato deprecato
- Gli header C++ AMP sono ora obsoleti. 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 sulla disattivazione di AMP.
Miglioramenti di IntelliSense
- Sono stati apportati miglioramenti a IntelliSense C++ nella navigazione e evidenziazione della sintassi per i tipi dei moduli importati e delle 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.
- Il Linter del codice IntelliSense per C++ è ora attivo per impostazione predefinita, fornendo suggerimenti istantanei mentre digiti e suggerimenti per correggere i difetti comuni del codice.
- IntelliSense C++ per i progetti CMake ora funziona quando si utilizza un preset 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 impone ora che i valori restituiti delle funzioni annotate con
_Check_return_
o_Must_inspect_result_
devono essere controllati. - Il rilevamento della dereferenziazione di puntatori nulli è stato migliorato nei nostri strumenti di analisi del codice.
- Aggiunto supporto per
gsl::not_null
all'analisi del codice. - Supporto per Libfuzzer nell'opzione del
/fsanitize=fuzzer
compilatore.
Note di rilascio 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 Feedback nell'angolo in alto a destra del programma di installazione o dell'IDE di Visual Studio o da Aiuto>Invia Feedback. È 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.