Nyheter för C++ i Visual Studio 2022
Visual Studio 2022 innehåller många uppdateringar och korrigeringar till Microsoft C++-kompilatorn och verktygen. Visual Studio IDE erbjuder också betydande förbättringar av prestanda och produktivitet och körs nu internt som ett 64-bitarsprogram.
- Mer information om nyheter i hela Visual Studio finns i Nyheter i Visual Studio 2022.
- Information om vad som är nytt i C++-dokumenten finns i Microsoft C++-dokument: Nyheter.
- Information om versionsbyggdatum finns i Visual Studio 2022 Versionshistorik.
Nyheter för C++ i Visual Studio version 17.13
släpptes februari 2025
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.13 |
Standardbiblioteket (STL) sammanfogade C++26- och C++23-funktioner, lösningar på LWG-problem, prestandaförbättringar, förbättrat beteende och fixade buggar. | STL Ändringslogg 17.13 |
Nya funktioner i IDE | Visual Studio 2022 version 17.13 Versionsinformation |
C++-språkuppdateringar | MSVC-kompilatoruppdateringar i Visual Studio 2022 17.13 |
Förbättringar av språkefterlevnad i C++ | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 17.13 |
En snabb markering av några av de nya funktionerna:
C++-språkförbättringar
Prova förhandsgranskningsfunktionerna i C++23 genom att ange C++ Language Standard till
/std:c++23preview
. Den här inställningen aktiverar de senaste C++23-funktionerna och felkorrigeringarna. Mer information finns i /std (Ange språkstandardversion).Stöd för C++23:s
size_t
literalsuffix, vilket hjälper till att undvika trunkeringar eller fel vid signerade jämförelser – särskilt när du skriver slingor. Till exempel:// 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) { ... }
Stöd för vektorlängder för kodgenerering på x86 och x64. För mer information, se /vlen.
Stöd för Intel Advanced Vector Extensions 10 version 1. Mer information om
/arch:AVX10.1
finns i /arch (x64).
förbättringar av standardbiblioteket
Standardbiblioteksstöd för couroutines. I det här exemplet från P2502R2är funktionen
fib
en coroutine. Närco_yield
-instruktionen körs pausasfib
och värdet returneras till anroparen. Du kan återupptafib
coroutine senare för att skapa fler värden utan att kräva någon manuell tillståndshantering: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{}); }
Flyttade
system_clock
,high_resolution_clock
ochchrono_literals
från en vanlig intern rubrik till<chrono>
. Om du ser kompilatorfel där typer somsystem_clock
eller användardefinierade literaler såsom1729ms
inte känns igen, inkludera<chrono>
.Förbättrade de vektoriserade implementeringarna av
bitset
konstruktorer från strängar,basic_string::find_last_of()
,remove()
,ranges::remove
och algoritmfamiljernaminmax_element()
ochminmax()
.Vektoriserade implementeringar har lagts till av:
-
find_end()
ochranges::find_end
för element med 1 byte och 2 byte. -
basic_string::find()
ochbasic_string::rfind()
för en delsträng. -
basic_string::rfind()
för ett enda tecken.
-
Sammanfogade felrapporter för C++23:
GitHub Copilot
GitHub Copilot Free är nu tillgängligt. Få 2 000 kodavslut och 50 chattförfrågningar per månad utan kostnad.
GitHub Copilot-kodkompletteringar ger förslag för automatisk komplettering infogade när du kodar. För att förbättra C++-utvecklarnas upplevelse innehåller GitHub Copilot andra relevanta filer som kontext. Detta minskar hallucinationer samtidigt som du erbjuder mer relevanta och korrekta förslag.
Nu kan du begära en kodgranskning från GitHub Copilot från fönstret Git-ändringar:
Fönstret Git-ändringar är öppet och knappen för GitHub Copilot-granskning är markerad.
GitHub Copilot letar efter potentiella problem och skapar kommentarer för dem:
GitHub Copilot hittade ett problem med raden "if (is_enabled_) new_site.disable()". Det står att det kan vara ett misstag och bör sannolikt vara om ( is_enabled_) new_site.enable() eftersom avsikten verkar aktivera den nya webbplatsen om brytpunkten är aktiverad.
Om du vill använda den här funktionen kontrollerar du att följande är aktiverat:
- Verktyg>Alternativ>Förhandsgranskning av Funktioner>Kommentarer för Pull-begäranden
- Verktyg>Alternativ>GitHub>Copilot>Källkontrollintegration>Aktivera Git-funktioner för förhandsgranskning.
GitHub Copilot Edits är en ny funktion som kan göra ändringar i flera filer i projektet. Om du vill starta en ny redigeringssession klickar du på Skapa ny redigeringssession överst i GitHub Copilot Chat-fönstret:
Beskriv de ändringar du vill göra och Copilot föreslår relevanta redigeringar. Du kan förhandsgranska redigeringarna en i taget och acceptera de du vill ha eller göra korrigeringar:
GitHub Copilot visar en sammanfattning av de ändringar som gjorts, till exempel 1. Skapa en ny underklass range_breakpoint i include/libsdb/breakpoint.hpp" och 2. Implementera klassen "range_breakpoint" i filen src/breakpoint.cpp. Ett alternativ för att acceptera ändringarna visas.
Mer information finns i Iterera över flera filer mer effektivt med GitHub Copilot Edits.
CMake
- Stöder nu CMake Presets v9. Nya makroexpansioner i ett förinställt inkluderingsfält. Mer information finns i Makroexpansion i den officiella CMake-dokumentationen.
Nyheter för C++ i Visual Studio version 17.12
släpptes november 2024
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.12 |
Standardbiblioteket (STL) sammanförde C++26- och C++23-funktioner, LWG-problemlösningar, prestandaförbättringar, förbättrat beteende och fixade buggar | STL Changelog 17.12 |
Nya funktioner i Visual Studio 17.12 IDE | Visual Studio 2022 version 17.12 Versionsinformation |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.12 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 17.12 |
En snabb markering av några av de nya funktionerna:
-
Förbättringar av standardbiblioteket
- C++23 Formateringsintervall (P2286R8) implementeringen har slutförts. Formatatorer har lagts till för containeradaptrarna
stack
,queue
ochpriority_queue
. - Flerdimensionella indexoperatorer har lagts till, som också stöder
<mdspan>
. Till exempel:print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- C++23 Formateringsintervall (P2286R8) implementeringen har slutförts. Formatatorer har lagts till för containeradaptrarna
-
Spelutveckling i C++
- Öppna Unreal Engine-projekt direkt i Visual Studio utan att behöva generera en Visual Studio-lösningsfil som omsluter Unreal Engine-projektet. Mer information finns i Arbeta med Unreal Engine-projekt i Visual Studio.
- Du kan ange de kommandoradsargument som ska skickas när du felsöker direkt från verktygsfältet. Mer information finns i Ange kommandoradsargument för Unreal Engine-projekt.
-
Bygginsikter
- Du kan köra Build Insights på valda filer. Välj de filer som du vill använda i Solution Explorer, högerklicka och välj Kör Build Insights på markerade filer:
- Du kan filtrera Build Insights-resultat efter projekt. Klicka på filterknappen i filterkolumnrubriken och välj de projekt som du vill visa resultat för:
- Klicka på frågemarkeringsikonen i fönstret Build Insights för att se en kort beskrivning av flikarna i fönstret Build Insights och en länk till dokumentationen för en detaljerad förklaring:
- Du kan köra Build Insights på valda filer. Välj de filer som du vill använda i Solution Explorer, högerklicka och välj Kör Build Insights på markerade filer:
-
GitHub Copilot
- Du kan klicka på Fråga Copilot bredvid värdet för en variabel för att få AI-drivna insikter om vad som ledde till dess aktuella tillstånd. Följande program har till exempel ett off-by-one-fel i loopvillkoret:
Om du klickar på ikonen Fråga Copilot för variabelnKoden som orsakade problemet är: för (auto it = h.animals_.begin(); den <= h.animals_.end(); it++).
it
visas varför den är<NULL>
:Det här felet finns i en funktion som är definierad som int calculate_number_of_cats(const house& h). GitHub Copilot-meddelandet säger: "Värdet för uttrycket det är NULL, vilket innebär att iteratorn inte pekar på något giltigt element i vektor animals_. I programmets kontext ska det iterera över animals_-vektorn i husobjektet för att räkna antalet kattobjekt. Varför det är null. Baserat på lokal- och anropsstackens kontext: husobjektet h har en tom animals_ vektor (storlek =0). Loopvillkoret där <= h.animals_.end() är felaktigt. Det bör vara det != h.animals_.end().
- Du kan klicka på Fråga Copilot om fel i Visual Studio Fellista för att få hjälp med felet och en föreslagen korrigering. Till exempel:
Om du klickar på Fråga Copilot får du information om felet:Ikonen för Copilot är markerad bredvid ett fel där unique_ptr försöker hänvisa till en borttagen funktion.
Copilot-meddelandet säger: "Felet uppstår eftersom det intervallbaserade för loopen försökte kopiera std::unique_ptr objekt, vilket inte är tillåtet eftersom std::unique_ptr inte kan kopieras. För att åtgärda detta ändrade jag loopen så att den använde en referens för att undvika att kopiera objekten std::unique_ptr. På så sätt itererar loopen över referenser till objekten std::unique_ptr, vilket är tillåtet."
-
felsökning
- Nya felsökningsvisualiserare för
mutex
,recursive_mutex
ochmove_iterator
. - Felsökningsprogrammet visar nu returvärden direkt i koden:
- Nya felsökningsvisualiserare för
Nyheter för C++ i Visual Studio version 17.11
släpptes augusti 2024
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.11 |
Standardbiblioteket (STL) sammanfogade C++26- och C++23-funktioner, C++20-felrapporter, LWG-problemmatchningar, prestandaförbättringar, förbättrat beteende och fasta buggar | STL Ändringslogg 17.11 |
Nya funktioner i Visual Studio 17.11 IDE | Visual Studio 2022 version 17.11 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.11 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 17.11 |
En partiell lista över nya funktioner:
Förbättringar av standardbiblioteket
- Den formaterade utdataimplementeringen innehåller nu
std::range_formatter
och formaterare förstd::pair
ochstd::tuple
. - Det har lagts till stöd för
std::println()
utan argument. Detta skriver ut en tom rad enligt förslaget i P3142R0. - Förbättrad vektorisering för flera algoritmer, inklusive
replace_copy()
,replace_copy_if()
,ranges::replace_copy
,ranges::replace_copy_if
,find_first_of()
ochranges::find_first_of
, för 8-bitars- och 16-bitarselement,mismatch()
,ranges::mismatch
,count()
ranges::count
,find()
,ranges::find
,ranges::find_last
ochranges::iota
.
- Den formaterade utdataimplementeringen innehåller nu
Spelutveckling i C++
- Nu kan du lägga till vanliga Unreal Engine-klassmallar, moduler och plugin-program från Visual Studio. Mer information finns i Lägg till Unreal Engine-klasser, moduler och plugin-program i Visual Studio.
- Det nya verktygsfältet Unreal Engine ger snabb åtkomst till Unreal Engine-relaterade åtgärder inifrån Visual Studio. Med verktygsfältet kan du snabbt ansluta till Unreal Engine-processer, genomsöka skisscachen igen, snabbt komma åt loggen för unreal engine och ge snabb åtkomst till konfigurationssidan för Unreal Engine för Visual Studio. Mer information finns i verktygsfältet Unreal Engine.
- Nu kan du filtrera spårningsresultat efter projekt. Dessutom visar resultaten i varje rad den relativa sökvägen och filnamnet i stället för den fullständiga sökvägen. Resultatgruppering i vyn Inkluderade filer har också förbättrats:
Vyn Inkluderade filer har en ny kolumn för projektet. Kolumnen Projekt är markerad och projekt som (Välj alla), CompilerIdC, OpenAL, common och så vidare, väljs. De inkluderade filerna visas efter relativ sökväg och filnamn och grupperas tillsammans.
CMake-felsökning
- Nu kan du felsöka dina CMake-skript och
CMakeLists.txt
filer i Visual Studio-felsökningsprogrammet för CMake-projekt som riktar in sig på Linux via Windows-undersystem för Linux (WSL) eller SSH. Om du vill starta en CMake-felsökningssession i Visual Studio anger du en brytpunkt i filenCMakeLists.txt
och navigerar sedan till Project>Configure Cache with CMake Debugging.
- Nu kan du felsöka dina CMake-skript och
GitHub Copilot
- När du hovra över symboler i kodredigeraren klickar du på knappen Berätta mer i dialogrutan Snabbinformation om du vill veta mer om en viss symbol:
Fönstret Snabbinformation visas ovanför en funktion. Länken Berätta mer är markerad.
- GitHub Copilot kan generera namngivningsförslag för dina identifierare (variabler, metoder eller klasser) baserat på hur identifieraren används och kodformatet.
Dialogrutan Byt namn har ett nytt namnfält med en listruta som visar följande alternativ: text_color, font_color, display_color, console_color och menu_text_color.
Du behöver en aktiv GitHub Copilot-prenumeration. Högerklicka på variabeln som du vill byta namn på och välj Byt namn på (
Ctrl+R
,Ctrl+R
). Välj GitHub Copilots gnistrande ikon för att generera namngivningsförslag.felsökning
- Villkorliga brytpunkter i C++ är snabbare.
Diagnostikförbättringar
- Förbättrad diagnostik vid anrop av
std::get<T>
på enstd::tuple
som har flera instanser avT
i sina mallargument. MSVC brukade rapportera:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Nu rapporterar den:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Förbättrad diagnostik när
std::ranges::to
inte kan konstruera det begärda resultatet. MSVC brukade rapportera:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Nu rapporterar den:
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)'
- Förbättrad diagnostik vid anrop av
Nyheter för C++ i Visual Studio version 17.10
släpptes maj 2024
För mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.10 |
Standardbiblioteket (STL) sammanfogade C++26- och C++23-funktioner, C++20-felrapporter, LWG-problemmatchningar, prestandaförbättringar, förbättrat beteende och fasta buggar | STL Changelog 17.10 |
Nya funktioner i Visual Studio 17.10 IDE | Visual Studio 2022 version 17.10 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.10 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 17.10 |
En partiell lista över nya funktioner:
- MSVC Toolset Update: MSVC-verktygsuppsättningsversionen uppdateras från 19.39 till 19.40. Detta kan påverka projekt som har versionsantaganden. Mer information om hur detta påverkar projekt som förutsätter att MSVC-versionerna är alla 19.3X för Visual Studio 2022-versioner finns i MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
-
Förbättringar av standardbiblioteket: Standardbiblioteket har lagt till stöd för P2510R3 formateringspekare, vilket ger uppsättningen formatspecificerare för pekare när du använder
std::format
mer i linje med de som redan finns för heltal. Förbättrade de vektoriserade implementeringarna avstd::min_element
,std::ranges::min
och vänner. - Build Insights: Ger nu information om mallinstansiering. Se Mallvy för Build Insights i Visual Studio eller Pure Virtual C++ – Mallvyn för Build Insights i Visual Studio inspelning.
- Unreal Engine Plugin: Det finns en ny opt-in-funktion för Unreal Engine Plugin att köras i bakgrunden, vilket minskar startkostnaderna. Det här är en opt-in-funktion som aktiveras via Tools>Options>Unreal Engine.
- Nya funktioner för Linux: Se nya Linux-utvecklingsfunktioner i Visual Studio.
- CMake Targets: Nu kan du fästa mål i CMake-målvy.
- Connection Manager UX-: Användarupplevelsen ger en smidigare upplevelse när du ansluter till fjärrsystem. Mer information finns i Förbättringar av användbarhet i Visual Studio Connection Manager.
- Kommentarer på pull-begäran: Nu kan du visa GitHub- och Azure DevOps-kommentarer direkt i din arbetsfil. Aktivera funktionsflaggan, kommentarer för pull-begäran i Alternativ>Miljö>Förhandsversionsfunktioner och checka ut pull-begäransgrenen för att börja.
- AI-Generated Content: GitHub Copilot kan nu skapa beskrivningar av pull-begäranden. Kräver en aktiv GitHub Copilot-prenumeration. Prova det genom att klicka på ikonen Lägg till AI-genererad pull-begäransbeskrivning glitterpenna i fönstret Skapa en pull-begäran.
-
Image Preview: Hovra över en bild för att se en förhandsgranskning med storleksdetaljer. Storleken är begränsad till 500 px bred och hög.
Musen hovrar över raden std::filesystem::path vs_logo_path = "../images/vs_logo.png". Under visas en förhandsgranskning av Visual Studio-logotypen och informationen om att den är 251 x 500 bildpunkter och 13,65 KB i storlek.
- Skapande av brytpunkt/spårningspunkt: Du kan nu skapa villkorliga brytpunkter eller spårningspunkter direkt från uttryck i källkoden från högerklicksmenyn. Detta fungerar på egenskaps- eller fältnamn och värden från automatiska variabler, lokala variabler, övervakningsfönster eller DataTips.
- Dialogrutan Koppla till process: Funktionerna i dialogrutan Bifoga till process är mer användarvänliga. Nu kan du enkelt växla mellan träd- och listvyer, organisera processer bättre med komprimerbara avsnitt och välja kodtyper med en förenklad kombinationsruta. Dessutom är funktionen "Välj/spåra fönster" nu enklare att använda, vilket möjliggör dubbelriktad spårning: om du väljer en process markeras dess fönster och klickar på ett fönster väljs processen.
-
GitHub Copilot Integration: GitHub Copilot- och Copilot Chat-tilläggen är nu enhetliga och levereras nu direkt i Visual Studio. Installera den genom att installera komponenten GitHub Copilot i Visual Studio Installer:
GitHub Copilot-gränssnittet finns i det övre högra hörnet i Visual Studio. Om du vill använda den behöver du en aktiv GitHub Copilot-prenumeration.
GitHub Copilot-knappen visas i det övre högra hörnet i Visual Studio. Den har alternativ för att öppna ett chattfönster, GitHub Copilot-inställningar, lära dig mer och hantera copilot-prenumeration.
Nyheter för C++ i Visual Studio version 17.9
släpptes feb 2024
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.9 |
Standardbiblioteket (STL) sammanfogade C++23-funktioner, prestandaförbättringar, förbättrat beteende, LWG-problemlösningar och korrigerade buggar | STL Ändringslogg 17.9 |
Nya funktioner i Visual Studio 17.9 IDE | Visual Studio 2022 version 17.9 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.9 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
Sammanfattning av C++-serverdelsuppdateringar | MSVC-serverdelsuppdateringar sedan Visual Studio 2022 version 17.3 |
En partiell lista över nya funktioner:
-
#include
diagnostik, som ger en detaljerad analys av dina#include
-direktiv. Aktivera den här funktionen genom att högerklicka på en#include
och välja #include direktiv>Aktivera #include direktivdiagnostik på. Ovanför varje#include
är antalet gånger koden refererar till den#include
filen. Klicka på länken referens för att navigera till den platsen där koden använder något från huvudfilen. För att visa byggtiden för dina#include
-direktiv kör du Build Insights genom att navigera till Build>Kör Build Insights på lösningen>Build.Ovanför #-inkluderingen finns en **referens**-länk och många av referenserna till den här # include-filen (i det här fallet 1). Byggtiden visas också (i det här fallet mindre än 1/2 per sekund).
- Visualisering av minneslayout som visar hur minnet arrangeras för dina klasser, strukturer och enheter. Hovra över en typ och välj länken Minneslayout i snabbinfo för att öppna ett dedikerat fönster som visar minneslayouten för den valda typen. Att hovra över enskilda datatyper i det här fönstret ger detaljerad information om deras storlek och förskjutning inom typen.
Fönstret för minneslayout visar innehållet i klassen Snake. Den visar minnesförskjutningar för de olika fälten i klassen, som punktklasserna för positionen av huvudet och kroppen, poängen och så vidare.
- Nu kan du ange din egen anpassade CMake-exekverbar fil. Den här funktionen är användbar om du vill använda en specifik version av CMake som inte levereras med Visual Studio. Gå till Verktyg>Alternativ och välj CMake>Allmänt. Välj Aktivera anpassad CMake-körbarfil och definiera katalogsökvägen för din CMake-körbarfil.
Dialogrutan CMake-alternativ med alternativet "Aktivera anpassad CMake-exekverbar" och fältet "CMake-exekverbarkatalog" som är markerat.
- Förbättrad IntelliSense för Unreal Engine-projekt.
- Förbättrat stöd för C++23:
std::format
ochstd::span
formattable
,range_format
,format_kind
ochset_debug_format()
som en del av P2286R8 formateringsintervall<mdspan>
per P0009R18 och efterföljande formuleringsändringar som tillämpades på C++23 Standard. Dessutom kanformat()
formatera pekare per P2510R3.
Nyheter för C++ i Visual Studio version 17.8
släpptes nov 2023
För mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.8 |
Standardbiblioteket (STL) kombinerade C++26, C++23-funktioner och C++20-tillägg, lösningar på LWG-problem, prestandaförbättringar, förbättrat beteende och åtgärdade buggar | STL Changelog 17.8 |
Nya funktioner i Visual Studio 17.8 IDE | Visual Studio 2022 version 17.8 Versionsinformation |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.8 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En översikt över C++-förbättringar i Visual Studio, VS Code och vcpkg under 2023 | Ett år med C++-förbättringar |
En partiell lista över nya funktioner:
- C++ strukturerad diagnostik i utdatafönstret och ett nytt probleminformationsfönster som ger mer information om felet. För mer information, se Structured SARIF Output och Problem Details Window.
- En funktion som gör att du kan visualisera storleken och justeringen för dina klasser, structs, unioner, bastyper eller uppräkningar redan innan koden kompileras. Hovra över identifieraren och en snabbinformation visar information om storlek och justering.
- En funktion som föreslår när medlemsfunktioner ska markeras
const
eftersom de inte ändrar objektets tillstånd. Hovra över en medlemsfunktion och klicka på glödlampaikonen för att markera funktionen somconst
. - Visual Studio uppmanar dig nu att markera globala funktioner som statiska via en skruvmejselikon som visas med funktionsnamnet. Klicka på skruvmejselikonen för att markera funktionen som statisk.
- Oanvända #include direktiv är nedtonade i redigeraren. Du kan hovra över en nedtonad inkludering och använda glödlampemenyn för att antingen ta bort den inkluderingen eller alla oanvända inkluderingar. Du kan också lägga till
#include
direktiv för entiteter som indirekt ingår via andra rubriker. För mer information, se Rensa C/C++ inkluderar i Visual Studio. - Mer stöd för Unreal Engine:
- Med Unreal Engine Test Adapter kan du identifiera, köra, hantera och felsöka dina Unreal Engine-tester utan att behöva lämna Visual Studio IDE.
- Med Unreal Engine Code-kodfragment kan du hitta vanliga Unreal Engine-konstruktioner som kodfragment i din medlemslista.
- Build Insights är nu integrerat med Visual Studio 2022 och fungerar med MSBuild- och CMake-projekt med MSVC. Nu kan du se ytterligare information om kompilering av en funktion, till exempel hur lång tid det tog att kompilera och antalet ForceInlines samt hur huvudfiler påverkar byggtiden. Mer information finns i Handledning: Felsöka funktionsinline vid byggtid och Handledning: Felsöka rubrikfilens inverkan på byggtid.
- Nu kan du köra dina CTest- och GTest-tester på dina fjärranslutna Linux-datorer från Visual Studio Test Explorer, precis som dina lokala tester.
Nyheter för C++ i Visual Studio version 17.7
släpptes aug 2023
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.7 |
Nya C++-funktioner som är specifika för spelutveckling | Frigöra kraften i Visual Studio 2022 för C++ Game Development |
Standardbiblioteket (STL) integrerade C++23-funktioner, LWG-lösningar av problem, prestandaförbättringar, förbättrat beteende och åtgärdade buggar | STL Changelog 17.7 |
Nya funktioner i Visual Studio 17.7 IDE | Visual Studio 2022 version 17.7 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.7 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner:
- Snabbare felsökningssessioner och snabbare inläsningstider för projekt
- Stegvis visualisering av makroexpansion
- Nedladdning med ett klick för Windows-undersystem för Linux (WSL)
- Förbättrat stöd för Doxygen-kommentarer
- C++ Build Insights för spelutveckling
- Lade till
/std:clatest
för C-kompilatorn. - Unreal Engine-projektförbättringar som snabbare IntelliSense och syntaxfärgning, möjligheten att hitta alla Unreal Engine Blueprint-referenser med mera.
Nyheter för C++ i Visual Studio version 17.6
släpptes maj 2023
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.6 |
Standardbiblioteket (STL) inkluderade C++23-funktioner, lösningar på LWG-frågor, prestandaförbättringar, förbättrat beteende och åtgärdade buggar. | STL Changelog 17.6 |
Nya funktioner i Visual Studio 17.6 IDE | Visual Studio 2022 version 17.6 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.6 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner innehåller:
- Felsökning av CMake-skript
- Inbyggt stöd för HLSL (High Level Shading Language)
- Loggvisare för Unreal Engine
- VCPKG läggs nu till som standard
- Initialt stöd för C++20 i C++/CLI-projekt och vissa C++23-standardbiblioteksfunktioner för intervall.
Nyheter för C++ i Visual Studio version 17.5
släpptes februari 2023
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.5 |
Standardbiblioteket (STL) införde C++23-funktioner, löste LWG-problem, förbättrade prestanda, förbättrade beteenden och åtgärdade buggar. | STL Ändringslogg 17,5 |
Nya funktioner i Visual Studio 17.5 IDE | Visual Studio 2022 version 17.5 Versionsinformation |
En partiell lista över nya funktioner innehåller:
std::move
,std::forward
,std::move_if_noexcept
ochstd::forward_like
producerar nu inte funktionsanrop i genererad kod, inte ens i felsökningsläge. Den här ändringen undviker namngivna casts som orsakar onödig överbelastning i felsökningskompileringar./permissive-
(eller ett alternativ som innebär det, till exempel/std:c++20
ellerstd:c++latest
) krävs.Lade till
[[msvc::intrinsic]]
. Du kan använda det här attributet för icke-återkommande funktioner som består av en enda gjutning, som bara tar en parameter.Stöd har lagts till för Linux-konsolen i den integrerade terminalen, vilket möjliggör terminal-I/O.
Lade till initialt experimentellt stöd för C11 atomiska primitiver (
<stdatomic.h>
). Du kan aktivera den här experimentella funktionen med alternativet/experimental:c11atomics
i/std:c11
läge eller senare.Lade till en ny uppsättning experimentella kontroller med hög konfidens i Lifetime Checker för reducerat brus.
Med en ny förhandsgranskningsfunktion, Remote File Explorer, kan du visa filkatalogen på dina fjärrdatorer i VS och ladda upp och ladda ned filer till den.
Ändrad versionshantering av körbara CMake-filer som levereras med Visual Studio för att matcha Kitware-versioner.
Stöd för Hot Reload har lagts till i CMake-projektmallen.
Gå till Definition för C++ använder nu en mer subtil indikator på att åtgärden tar mer tid och ersätter den modala dialogrutan från tidigare versioner.
Började utrullningen av ett experiment som ger smartare resultat i C++-autokomplettering och medlemslistan. Den här funktionen kallades tidigare Predictive IntelliSense men använder nu en ny presentationsmetod.
Nu skickar vi en inbyggd Arm64 Clang-verktygsuppsättning med vår LLVM-arbetsbelastning, vilket tillåter intern kompilering på Arm64-datorer.
Lokalisering har lagts till i Image Watch-tillägget (det här tillägget är tillgängligt på Marketplace och paketeras inte via Visual Studio Installer).
Stöd har lagts till för att öppna ett terminalfönster i utvecklarcontainern som körs.
Gjorde flera förbättringar av IntelliSense-makroexpansionen. Framför allt har vi aktiverat rekursiv expansion i fler kontexter, och vi har lagt till alternativ i popupfönstret för att kopiera expansionen till urklipp eller expandera makrot infogat.
Samtidig övervakning stöds nu i serieövervakaren. Med samtidig övervakning kan du övervaka flera portar samtidigt sida vid sida. Tryck på plusknappen för att öppna en annan seriell övervakare och kom igång.
Nu kan du visa egenskaper från basklasser som ändrats i en Unreal Blueprint-tillgång utan att lämna Visual Studio. Dubbelklicka på en skissreferens för en C++-klass eller egenskap för att öppna UE Asset Inspector i Visual Studio.
Aktiverad körning av DevContainers på en fjärransluten Linux-dator.
Aktiverat val av flera mål som ska skapas i vyn CMake-mål.
Stöd har lagts till för CMakePresets.json version 5. Mer information om nya funktioner finns i CMake-dokumentationen.
Aktiverade Test Explorer för att skapa och testa flera CMake-mål parallellt.
Alternativet Öppna container i terminalen har lagts till i Dev Containers.
Implementerade standardbiblioteksfunktioner:
Nyheter för C++ i Visual Studio version 17.4
släpptes nov 2022
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Nyheter för C++-utvecklare i Visual Studio 2022 17.4 |
Standardbiblioteket (STL) införde C++23-funktioner, lösningar på LWG-frågor, prestandaförbättringar, förbättrat beteende och åtgärdade buggar. | STL Ändringslogg 17.4 |
Nya funktioner i Visual Studio 17.4 IDE | Visual Studio 2022 version 17.4 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.4 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner i 17.4:
Förbättrade kompilatorfelmeddelanden för att ge mer korrekt och användbar information, särskilt för begrepp.
Det experimentella MSVC-alternativet
/experimental:log<directory>
har lagts till för att skapa utdata av strukturerad SARIF-diagnostik i den angivna katalogen.Stöd har lagts till för C23-attribut till IntelliSense och fortsatt förlopp i stöd för C++20-moduler.
Bättre indexeringsprestanda när du öppnar en ny lösning. Stora projekt kunde se en förbättring på 20–35% från 17,3.
Förbättrad Named Return Value Optimization (NRVO):
- NRVO är aktiverat för ärenden som omfattar undantagshantering eller loopar.
- NRVO aktiveras även under
/Od
om användaren godkänner alternativet/Zc:nrvo
eller/std:c++20
eller senare, eller/permissive-
. - Du kan nu inaktivera NRVO med alternativet
/Zc:nrvo-
.
Uppgraderade versionen av LLVM som levererades med Visual Studio till 15.0.1. Mer information om vad som är tillgängligt finns i versionsanteckningarna för LLVM och Clang.
Stöd har lagts till i Visual Studio för vcpkg-artefakter med CMake-projekt. För projekt som innehåller ett vcpkg-manifest aktiveras miljön automatiskt vid projektöppning. Läs mer om den här funktionen i aktiveringen av vcpkg-miljön i Visual Studio-blogginlägget.
Nu kan du använda Dev Containers för dina C++-projekt. Läs mer om den här funktionen i blogginlägget Dev Containers for C++.
IntelliSense respekterar nu ordningen av förinkluderade headrar när en av dem är en PCH. Tidigare, när en PCH användes via
/Yu
och tvingades inkluderas via/FI
, skulle IntelliSense alltid bearbeta den först, innan andra huvudfiler som inkluderas via/FI
. Det här beteendet matchade inte byggbeteendet. Med den här ändringen bearbetas/FI
rubriker i den ordning de anges.Tog bort interna prefix från CTest-namn i Test Explorer.
Uppdaterade versionen av CMake som levererades med Visual Studio till version 3.24.1. Mer information om vad som är tillgängligt finns i CMake-releasenoteringar.
Android SDK-uppdatering:
- Ant-skript har tagits bort, så användarna ser inte längre Ant-baserade mallar i dialogrutan Nytt projekt. För att få hjälp med att migrera från Ant-mallar till Gradle-mallar, se Migrering av byggen från Apache Ant
- Stöd har lagts till för att kunna bygga med NDK 23 och 24
- NDK-komponenten har uppdaterats till LTS version 23
Vektoriserade implementeringar av
ranges::min_element()
,ranges::max_element()
ochranges::minmax_element()
har lagts tillVi fortsätter att följa den senaste utvecklingen inom C++-standardisering. Stöd för dessa C++23-funktioner är tillgängligt genom att inkludera
/std:c++latest
i kompilatoralternativen:P2302R4
ranges::contains
,ranges::contains_subrange
P2499R0
string_view
områdeskonstruktorn ska varaexplicit
P0849R8
auto(x)
: sönderfallskopia I språket(Kompilatordelen har inte implementerats än. Biblioteksdelen implementerades i C++20-läge när Stöd för intervall ursprungligen implementerades.)
P0881R7
<stacktrace>
P2301R1 Lägga till ett
pmr
alias förstd::stacktrace
P1328R1
constexpr type_info::operator==()
P2440R1
ranges::iota
,ranges::shift_left
,ranges::shift_right
P2441R2
views::join_with
Ett alternativ har lagts till "Navigering efter Skapa deklaration/definition" så att du kan välja navigeringsbeteendet för funktionen Skapa deklaration/definition. Du kan välja mellan att granska (standard) eller öppna dokumentet eller att inte navigera.
Arm64-versioner av Visual Studio paketerar nu Arm64-versioner av CMake och Ninja.
Stöd har lagts till för CMake Presets version 4. Mer information om vad som är tillgängligt finns i CMake-utgåvemeddelanden.
Fjärrsystemanslutningar med Connection Manager stöder nu SSH ProxyJump. ProxyJump används för att komma åt en SSH-värd via en annan SSH-värd (till exempel för att komma åt en värd bakom en brandvägg).
Nyheter för C++ i Visual Studio version 17.3
släpptes aug 2022
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | C++-förbättringar i 17.3 |
Standardbiblioteket (STL) integrerade C++23-funktioner, LWG-ärendelösningar, prestandaförbättringar, förbättrat beteende och buggar åtgärdades | STL Changelog 17.3 |
Nya funktioner i Visual Studio 17.3 IDE | Visual Studio 2022 version 17.3 Versionsanteckningar |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.3 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner i 17.3:
- Arm64EC-verktygskedjan är inte längre markerad som experimentell och är redo för produktionsanvändning.
- Visual Studio-terminalen kan nu användas som en SSH-klient med dina lagrade SSH-anslutningar. Öppna fönstret Terminal-verktyg med C++ för Linux-verktyg installerat. Listrutan Terminal fylls i med dina lagrade anslutningar. När du väljer en anslutning öppnas ett nytt terminalfönster i Visual Studio som visar en pseudoterminal i fjärrsystemet. Kontrolltecken, färger och markörpositionsmedvetenhet stöds.
- Visual Studio kan nu lägga till Unreal Engine-klassmallar för dina UE-projekt. Om du vill prova den här funktionen kontrollerar du att IDE-stöd för Unreal Engine har valts i Game-utveckling med C++ arbetsbelastning i Visual Studio Installer. När du arbetar med ett UE-projekt högerklickar du i projektet eller en mapp/filter och väljer Lägg till>UE-klass.
- Gå till Definition nu kommer ihåg den tidigare signaturen och navigerar därefter när en bättre matchning inte är tillgänglig (till exempel när du har ändrat signaturen för ett av paret manuellt). Svarstiden för Gå till alla har förbättrats. Tidigare visades resultaten när du slutade skriva. I den nya upplevelsen visas resultaten när du skriver.
- I kontexter som kräver
enum
typkomplettering (till exempel tilldelningar tillenum
variabler, case-etiketter, returnering avenum
-typ osv.) filtreras listan över automatisk komplettering nu till endast matchande uppräknare och andra relaterade konstruktioner. - NuGet PackageReference-stöd har lagts till för C++/CLI MSBuild-projekt som riktar sig till .NET Core. Den här ändringen gjordes för att avblockera blandade kodbaser från att kunna använda .NET Core. Det här stödet fungerar inte för andra C++-projekttyper eller C++-projekttyper som riktar sig till .NET Framework. Det finns inga planer på att utöka PackageReference-stödet till andra C++-scenarier. Teamet arbetar med separata upplevelser som involverar vcpkg för scenarier som inte är MSBuild och för att lägga till fler funktioner.
- Ett serieövervakningsfönster har lagts till för inbyggd utveckling, tillgängligt genom Debug>Windows>Serial Monitor.
- Förbättrad C++-indexering med ~66% jämfört med 17,2.
- Uppdaterade versionen av CMake som levererades med Visual Studio till version 3.23. Mer information om vad som är tillgängligt finns i CMake 3.23-releasenoteringar för detaljer.
- Uppgraderade versionerna av LLVM-verktyg som levererades med Visual Studio till v14. För mer information om vad som är tillgängligt, se LLVM- och Clang versionsinformation.
- Uppdaterade den parallella Dev 16.11 C++ Toolset till version 14.29.30145.00. Den senaste versionen av Dev 16.11 C++ Toolset innehåller viktiga felkorrigeringar, inklusive att åtgärda alla återstående C++20-defektrapporter. Mer information om buggfixar, inklusive C++20-felrapporter i Dev 16.11, finns i Visual Studio 2019 version 16.11.14 versionsinformation.
- Gjorde olika förbättringar av redigeringsupplevelsen för C++-moduler. Vi arbetar kontinuerligt med att förbättra kvaliteten på upplevelsen men uppmuntrar dig att prova dem i 17.3. Rapportera återstående problem via Developer Community.
Nyheter för C++ i Visual Studio version 17.2
släpptes maj 2022
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Visual Studio 2022 17.2 är nu tillgänglig |
Standardbiblioteket (STL) sammanfogade C++20-felaktighetsrapporter, C++23-funktioner, LWG-problemlösningar, prestandaförbättringar, förbättrat beteende och åtgärdade buggar | STL Ändringslogg 17.2 |
Nya funktioner i Visual Studio 17.2 IDE | Visual Studio 2022 version 17.2 Versionsinformation |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.2 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner i 17.2:
- Kompilatorstöd har lagts till för funktionen C++23 att härleda
this
, som är tillgängligt under alternativet/std:c++latest
. - IntelliSense-stöd har lagts till för C++23-funktioner att härleda
this
ochif consteval
. - Infogat parameternamn och stöd för typtips har lagts till genom att trycka på Alt+F1 eller dubbeltrycka Ctrl. Det här beteendet kan anpassas under Verktyg > Alternativ > textredigerare > C/C++ > IntelliSense.
- Lade till experimentellt stöd för C++20-moduler i CMake-projekt. Det här stödet är för närvarande endast tillgängligt med Visual Studio-generatorn (MSBuild).
- I 17.1 introducerade vi kringutrustningsregister och RTOS-vyer för inbäddade utvecklare. Vi fortsätter att förbättra funktionerna i dessa vyer med användbarhetsförbättringar i 17.2:
- RTOS-verktygsfönstret är nu dolt som standard. Det förhindrar att ett verktygsfönster visas med felmeddelanden som inte är relevanta när du inte använder en RTOS.
- När du dubbelklickar på ett RTOS-objekt i verktygsfönstret lägger det till en klocka för objektet.
- När du väljer start- och slutvärdena för stackpekaren i RTOS-verktygsfönstret öppnas den i minnesfönstret.
- Trådmedvetenhet har lagts till för enhetsmål i anropsstackfönstret.
- Användare kan nu välja en fästikon bredvid kringutrustning, register eller fält för att fästa dem överst i kringutrustningsvyn.
- Implementeringar av återstående C++20-felrapporter har lagts till (kallas även backports). Alla C++20-funktioner är nu tillgängliga under alternativet
/std:c++20
. Mer information om de implementerade backportarna finns i VS 2022 Changelog på Microsoft/STL GitHub-lagringsplatsen och blogginlägget MSVC:s STL Completes/std:c++20
. - Vi har lagt till olika C++23-biblioteksfunktioner som är tillgängliga under alternativet
/std:c++latest
. Mer information om de nya funktionerna finns i STL Repo changelog. - Förbättrad prestanda för den inledande C++-indexeringen med upp till 20%, beroende på djupet i inkluderingsdiagrammet.
Nyheter för C++ i Visual Studio version 17.1
släpptes februari 2022
Mer information om | Se |
---|---|
Nyheter för C++-utvecklare | Visual Studio 2022 17.1 är nu tillgänglig! |
Standardbiblioteket (STL) integrerade C++23-funktioner, lösningar på LWG-ärenden, prestandaförbättringar, förbättrat beteende och rättade buggar. | STL Changelog 17.1 |
Nya funktioner i Visual Studio 17.1 IDE | Visual Studio 2022 version 17.1 Versionsinformation |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.1 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 |
En partiell lista över nya funktioner i 17.1:
- En ny Konfigurera förinställd-mall läggs till för att konfigurera och skapa CMake-projekt på ett fjärranslutet macOS-system med
CMakePresets.json
. Du kan också starta CMake-mål på ett macOS-fjärrsystem och sedan felsöka via fjärranslutning i Visual Studio-felsökningsprogrammet som backas upp av GDB eller LLDB. - Nu kan du felsöka kärndumpar på ett macOS-fjärrsystem från Visual Studio med LLDB eller GDB.
- Versionerna av
Clang
ochLLVM
som levereras med Visual Studio uppgraderas till v13. - Visual Studio's CMake-integrering är bara aktiv när en
CMakeLists.txt
identifieras i roten av den öppna arbetsytan. Om enCMakeLists.txt
identifieras på en annan nivå på arbetsytan uppmanas du att aktivera Visual Studio CMake-integrering med ett meddelande. - Nya vyer som gör att du kan inspektera och interagera med kringutrustningsregister på objekt för mikrostyrenheter och realtidsoperativsystem (RTOS), tillgängliga via Felsökning>Windows>Embedded-register
- Lade till en ny trådvy för RTOS-projekt, tillgänglig via Felsökning>Windows>RTOS-objekt. Mer information finns i Embedded Software Development i Visual Studio.
Nyheter för C++ i Visual Studio version 17.0
släpptes nov 2021
Mer information om | Se |
---|---|
Nya funktioner i Visual Studio 17.0 IDE | Visual Studio 2022 version 17.0 Versionsinformation |
Standardbiblioteket (STL) sammanslog C++23- och C++26-funktioner, C++20-defektrapporter, LWG-problemlösningar, prestandaförbättringar, förbättrat beteende och korrigerade buggar | STL Changelog 17.0 |
Förbättringar av språkefterlevnad i C++ i Visual Studio 2022 17.0 | förbättringar av C++-överensstämmelse, beteendeändringar och felkorrigeringar i Visual Studio 2022 17.10 |
En översikt över några av de nya funktionerna i Visual Studio 2022 version 17.0:
- Visual Studio IDE,
devenv.exe
, är nu ett internt 64-bitarsprogram. - MSVC-verktygsuppsättningen använder nu som standard SHA-256-källhashning i felsökningsposter. Tidigare använde verktygsuppsättningen MD5 för källhashning som standard.
- V143-byggverktygen är nu tillgängliga via Installationsprogrammet för Visual Studio och i fristående byggverktyg.
Direkt omladdning för native C++
- Hot Reload för C++ gör det möjligt att utföra många typer av kodredigeringar på din körande app och tillämpa dem utan att behöva pausa appens körning med till exempel en brytpunkt.
När du startar appen i felsökningsprogrammet i Visual Studio 2022 kan du använda knappen Frekvent omläsning för att ändra programmet medan det fortfarande körs. Den här funktionen drivs av den inbyggda Edit and Continue-funktionen. Mer information om redigeringar som stöds finns i Redigera och fortsätt (C++).
- Hot Reload stöder CMake- och Open Folder-projekt.
WSL2-stöd
- Nu kan du skapa och felsöka internt på WSL2 utan att upprätta en SSH-anslutning. Både plattformsoberoende CMake-projekt och MSBuild-baserade Linux-projekt stöds.
Förbättrat CMake-stöd
Uppgraderade versionen av CMake som levererades med Visual Studio till version 3.21. För mer information om vad som finns tillgängligt i den här versionen, se CMake 3.21 utgivningsanteckningar.
CMake-översiktssidor har uppdaterats för att stödja
CMakePresets.json
.Nu kan du konfigurera och skapa dina CMake-projekt med CMake 3.21 och
CMakePresets.json
v3.Visual Studio stöder nu alternativet
buildPresets.targets
iCMakePresets.json
. Med det här alternativet kan du skapa en delmängd av mål i ditt CMake-projekt.Projektmenyn i CMake-projekt är strömlinjeformad och visar alternativ för "Ta bort cache och konfigurera om" och "Visa cache".
Implementerade kompilatoralternativet
/scanDependencies
för att lista C++20-modulberoenden för CMake-projekt enligt beskrivningen i P1689R5. Det är ett steg mot stöd för att skapa modulbaserade projekt med CMake och vi arbetar med att slutföra det här stödet i senare versioner.
Standardbiblioteksförbättringar
Välj förbättringar i Standardbiblioteket (STL) som markeras här. En omfattande lista över nya funktioner, ändringar, felkorrigeringar och prestandaförbättringar finns i STL-teamets Changelog.
- Felsökningsvisualiserare har lagts till för att förbättra hur följande typer visas:
source_location
,bind_front()
,u8string
(och dess iteratorer),default_sentinel_t
,unreachable_sentinel_t
,ranges::empty_view
,ranges::single_view
,ranges::iota_view
(och dess iterator/sentinel),ranges::ref_view
,thread
,thread::id
,jthread
ochfilesystem::path
-
[[nodiscard]]
har lagts till istoi()
-serien med funktioner i<string>
samt till olika funktioner av<locale>
, inklusivecollate
:s medlemsfunktioner,has_facet()
samtisalnum()
- ochtolower()
-familjerna. -
P0980R1 Gjord
std::string
constexpr
i VS 2019 16.10. Stöds nu för Clang. -
P1004R2 Gjort
std::vector
constexpr
i VS 2019 16.10. Stöds nu för Clang.
Höjdpunkter C++23-funktioner
-
P1048R1 Lade till
is_scoped_enum
, ett nytt drag för C++ Standard-biblioteket, som identifierar om en typ är en begränsad uppräkning. -
P1132R7
out_ptr()
,inout_ptr()
-
P1679R3
contains()
Förbasic_string
ochbasic_string_view
-
P1682R3
to_underlying()
för uppräkningar -
P2162R2 Tillåt ärvning från
std::variant
-
P2166R1 Förhindra konstruktion av
basic_string
ochbasic_string_view
frånnullptr
. Den här ändringen är en ändring som ändrar källan på ett genomgripande sätt. Kod som tidigare hade odefinierat beteende vid körning avvisas nu med kompilatorfel. -
P2186R2 Stöd för skräpinsamling har tagits bort. Den här ändringen tar bort
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
,get_pointer_safety
. Tidigare hade dessa funktioner ingen effekt.
Framhävda prestandaförbättringar
- Nu identifierar
<format>
när det skrivs till enback_insert_iterator
för enbasic_string
eller envector
, och gör ett snabbare anrop tillinsert()
vid containernsend()
. - Vi förbättrade prestandan för
std::find()
ochstd::count()
förvector<bool>
19x och 26x (gånger, inte procent). - Vi förbättrade prestandan hos
std::count()
med avseende påvector<bool>
-
std::byte
har nu samma prestanda somunsigned char
ireverse()
ochvariant::swap()
Stöd för Clang och LLVM
LLVM-verktyg som levereras med Visual Studio uppgraderas till LLVM 12. För mer information, se de LLVM-versionsanteckningar.
Clang-cl-stödet uppdaterades till LLVM 12.
Nu kan du felsöka processer som körs på ett fjärrsystem från Visual Studio med hjälp av LLDB.
C++ AMP föråldrad
- C++ AMP-huvuden är nu inaktuella. Om du inkluderar
<amp.h>
i ett C++-projekt genereras byggfel. Om du vill tysta felen definierar du_SILENCE_AMP_DEPRECATION_WARNINGS
. Mer information finns i våra AMP-utfasningslänkar.
Förbättringar av IntelliSense
- Vi har gjort förbättringar i C++ IntelliSense när vi tillhandahåller navigering och syntaxmarkering för typer från importerade moduler och rubrikenheter. IntelliSense är ett aktivt investeringsområde för oss. Hjälp oss att förbättra: Dela din feedback om utvecklarcommunityn med hjälp av Hjälp>Skicka feedback.
- Vi har förbättrat C++ IntelliSense-prestanda genom att optimera cachelagrad sidhuvudanvändning och åtkomst till symboldatabasen, vilket ger bättre inläsningstider för att komma in i koden.
- IntelliSense Code Linter för C++ är nu aktiverat som standard, vilket ger omedelbara förslag som du skriver och åtgärdar förslag på vanliga kodfel.
- C++ IntelliSense för CMake-projekt fungerar nu när du använder en förinställning med ett visningsnamn.
C++ Arbetsbelastningsuppdateringar
- Uppdaterad till NDK r21 LTS i arbetsytan C++ Mobile Development.
- Arbetsflödet Spelutveckling med C++ installerar nu den senaste versionen av Unreal Engine med stöd för Visual Studio 2022.
Förbättringar av kodanalys
- Kodanalysen framtvingar nu att returvärden för funktioner som kommenterats med
_Check_return_
eller_Must_inspect_result_
måste kontrolleras. - Identifiering av null-pekaravreferens har förbättrats i kodanalysverktyget.
- Stöd för
gsl::not_null
för kodanalys har lagts till. - Stöd för Libfuzzer under kompilatoralternativet
/fsanitize=fuzzer
.
Viktig information för äldre versioner
Versionsinformation för äldre C++-versioner är också tillgänglig.
- Information om vad som är nytt för C++ i Visual Studio 2019 finns i Nyheter för C++ i Visual Studio 2019.
- Information om vad som är nytt för C++ i Visual Studio 2017 finns i Nyheter för C++ i Visual Studio 2017.
- Information om vad som är nytt i tidigare versioner finns i Visual C++ What's new 2003 through 2015.
Kända problemområden
C++ IntelliSense
Mer information om andra öppna problem och tillgängliga lösningar för C++ i Visual Studio 2022 finns i problemlistan för C++ Developer Community .
Feedback och förslag
Vi vill gärna höra från dig. Du kan Rapportera ett problem eller Föreslå en funktion med hjälp av ikonen Skicka feedback i det övre högra hörnet i installationsprogrammet eller Visual Studio IDE eller från Hjälp>Skicka feedback. Du kan spåra dina problem med hjälp av Visual Studio Developer Community, där du lägger till kommentarer eller hittar lösningar. Du kan också få kostnadsfri installationshjälp via vår Live Chat-support.
Bloggar
Dra nytta av de insikter och rekommendationer som finns i Microsoft Developer Blogs webbplats för att hålla dig uppdaterad om alla nya versioner. Bloggarna innehåller djupgående inlägg om ett brett utbud av funktioner. C++ Team Blog och Visual Studio Blog är av särskilt intresse.