Condividi tramite


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.

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'istruzione co_yield, fib viene sospesa e il valore viene restituito al chiamante. È possibile riprendere la coroutine fib 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_clocke chrono_literals da un'intestazione interna comunemente inclusa in <chrono>. Se vengono visualizzati errori del compilatore come system_clock o valori letterali definiti dall'utente come 1729ms non vengono riconosciuti, includere <chrono>.

  • Sono stati migliorati le implementazioni vettorializzate dei costruttori di bitset da stringhe, basic_string::find_last_of(), remove(), ranges::removee le famiglie di algoritmi minmax_element() e minmax().

  • Sono state aggiunte implementazioni vettorializzate di:

    • find_end() e ranges::find_end per gli elementi a 1 byte e 2 byte.
    • basic_string::find() e basic_string::rfind() per una sottostringa.
    • basic_string::rfind() per un singolo carattere.
  • Report consolidati dei difetti di C++23:

    • P3107R5 Consentire l'implementazione efficiente di <print>.
    • P3235R3std::print Più tipi, più velocità con meno memoria.
  • 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:

      Screenshot della finestra Modifiche Git con il pulsante GitHub Copilot Review evidenziato.

      La finestra Modifiche Git è aperta con il pulsante GitHub Copilot Review evidenziato.

      GitHub Copilot cerca potenziali problemi e crea commenti per loro:

      Screenshot di GitHub Copilot che illustra un problema.

      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:

      Screenshot della finestra Di chat di GitHub Copilot. Il pulsante Crea nuova sessione di modifica è evidenziato.

      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:

      Screenshot della finestra Chat di GitHub Copilot che mostra i file modificati.

      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 e priority_queue.
    • Aggiunta di operatori di pedice multidimensionale, che supportano anche <mdspan>. Ad esempio: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Sviluppo di giochi in C++
  • 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: Screenshot della finestra Build Insights con la scheda File inclusi aperta. Il pulsante filtro è stato selezionato e viene visualizzato un elenco di progetti. Le caselle di controllo accanto a Due progetti sono selezionate.
    • 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: Screenshot della finestra Build Insights con il pulsante visualizza descrizioni (un punto interrogativo in un cerchio) evidenziato.
  • 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:

    Una schermata della finestra Auto. La variabile denominata

    Il codice che ha causato questo problema è: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Se si fa clic sull'icona Ask Copilot per la variabile it, indica perché è <NULL>:

    Screenshot di una finestra di GitHub Copilot.

    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:

    Screenshot della finestra Elenco errori.

    L'icona Ask Copilot è evidenziata accanto a un errore in cui unique_ptr tenta di fare riferimento a una funzione eliminata.

    Se si fa clic su Ask Copilot, viene indicato l'errore:

    Screenshot della spiegazione di GitHub Copilot per l'errore.

    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_mutexe move_iterator.
    • Il debugger visualizza ora i valori restituiti inline: Screenshot di una descrizione comando che mostra il valore 8.25. È il risultato dell'espressione che segue l'istruzione return su cui è stato eseguito il failover.

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 per std::pair e std::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_iffind_first_of()e ranges::find_first_of, per elementi a 8 bit e a 16 bit, , mismatch()ranges::mismatchcount()ranges::countfind()ranges::find, ranges::find_laste .ranges::iota
  • 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.

    Screenshot dei risultati di diagnostica dei file inclusi migliorati.

    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 nel CMakeLists.txt file e quindi passa a Progetto>Configura cache con il debug di CMake.
  • 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:

    Screenshot della finestra Informazioni rapide.

    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.

      Screenshot della finestra di dialogo Rinomina di GitHub Copilot.

      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 un std::tuple che ha più istanze di T 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)'

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 di std::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.

    Screenshot dell'anteprima al passaggio del mouse.

    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:

    Screenshot dell'opzione di installazione di 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.

    Screenshot del pulsante GitHub Copilot.

    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.

    Screenshot della diagnostica di #include.

    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.

    Screenshot della finestra del layout di memoria

    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.

    Screenshot della finestra di dialogo delle opzioni di 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::spanformattable , range_format, format_kinde set_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 come const.
  • 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
  • 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_noexcepte std::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 o std: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:

    • basic_format_stringP2508R1 , format_string,wformat_string
    • ranges::fold_leftP2322R6 , ranges::fold_righte così via.
    • views::zip P2321R2 (non include zip_transform, adjacent e adjacent_transform)

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() e ranges::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:

    • P2302R4ranges::contains, ranges::contains_subrange

    • P2499R0string_view Il costruttore di intervalli deve essereexplicit.

    • auto(x)P0849R8 : decadimento nella lingua

      La parte del compilatore non è ancora implementata. La parte della libreria è stata implementata in modalità C++20 quando è stato implementato inizialmente il supporto degli intervalli.

    • P0881R7 <stacktrace>

    • P2301R1 aggiungere un pmr alias a std::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • ranges::iotaP2440R1 , ranges::shift_left,ranges::shift_right

    • P2441R2 views::join_with

  • 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 a enum variabili, etichette case, tipo restituito enum 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 e if 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++20sul 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 e LLVM 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 un CMakeLists.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 in CMakePresets.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()u8stringdefault_sentinel_tunreachable_sentinel_t(e il relativo iteratore/sentinel), ranges::empty_view, , ranges::single_viewranges::iota_viewranges::ref_view, , e threadthread::idjthreadfilesystem::path
  • Aggiunto [[nodiscard]] alla famiglia di funzioni stoi() in <string> e a varie funzioni in <locale>, come le funzioni membro collate, has_facet(), e le famiglie isalnum() e tolower().
  • P0980R1 realizzato std::stringconstexpr in VS 2019 16.10. Ora supportata per Clang.
  • P1004R2 fatto std::vectorconstexpr 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.
  • P1132R7out_ptr(), inout_ptr()
  • contains() P1679R3 per basic_string e basic_string_view
  • to_underlying() P1682R3 per le enumerazioni
  • P2162R2 Consenti l'ereditarietà da std::variant
  • P2166R1 Proibire la costruzione di basic_string e basic_string_view da nullptr. 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 un back_insert_iterator o in un basic_string per un vector, ed esegue una chiamata più veloce a insert() all'inizio del contenitore end().
  • Sono stati migliorate le prestazioni di std::find() e std::count() per vector<bool> 19x e 26x (volte, non per cento).
  • Abbiamo migliorato le prestazioni di std::count() per vector<bool>
  • std::byte ora ha le stesse prestazioni di unsigned char in reverse() e variant::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++:

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.