Delen via


Nieuw voor C++ in Visual Studio 2022

Visual Studio 2022 biedt veel updates en oplossingen voor de Microsoft C++-compiler en -hulpprogramma's. De Visual Studio IDE biedt ook aanzienlijke verbeteringen in prestaties en productiviteit en wordt nu systeemeigen uitgevoerd als een 64-bits toepassing.

Wat is er nieuw voor C++ in Visual Studio versie 17.13

uitgebracht in februari 2025

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.13
Standaardbibliotheek (STL) samengevoegde C++26- en C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Changelog 17.13
Nieuwe functies in de IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.13
C++-taalupdates MSVC-compiler-updates in Visual Studio 2022 17.13
Verbeteringen in de taalconformantie in C++ de verbeteringen in C++ conformiteit, gedragswijzigingen en foutoplossingen in Visual Studio 2022 17.13

Een kort overzicht van enkele van de nieuwe functies:

  • C++-taalverbeteringen

    • Probeer C++23 preview-functies door de C++ Taalstandaard in te stellen op /std:c++23preview. Met deze instelling worden de nieuwste C++23-functies en oplossingen voor fouten ingeschakeld. Zie /std (Language Standard Version opgeven)voor meer informatie.

    • Ondersteuning voor de letterlijke achtervoegsel size_t van C++23, waarmee truncaties of ongelijke tekens bij vergelijkingen voorkomen kunnen worden, met name bij het schrijven van lussen. Voorbeeld:

      // 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)
      { 
        ...
      } 
      
    • Ondersteuning voor vectorlengten voor het genereren van code op x86 en x64. Zie /vlenvoor meer informatie.

    • Ondersteuning voor Intel Advanced Vector Extensions 10 versie 1. Zie /arch (x64)voor meer informatie over /arch:AVX10.1.

  • Verbeteringen De Standaardbibliotheek

    • Standaardbibliotheekondersteuning voor couroutines. In dit voorbeeld uit P2502R2is de functie fib een coroutine. Wanneer de co_yield-instructie wordt uitgevoerd, wordt fib onderbroken en wordt de waarde geretourneerd aan de aanroeper. Je kunt de fib coroutine later hervatten om extra waarden te genereren, zonder dat je de status handmatig hoeft bij te houden.

      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{}); 
      } 
      
  • Verplaatst system_clock, high_resolution_clocken chrono_literals van een veelgebruikte interne header naar <chrono>. Als u compilerfouten ziet die typen zoals system_clock of door de gebruiker gedefinieerde letterlijke waarden zoals 1729ms niet worden herkend, voegt u <chrono>toe.

  • Verbeterde gevectoriseerde implementaties van bitset constructors van tekenreeksen, basic_string::find_last_of(), remove(), ranges::removeen de minmax_element()- en minmax() algoritmefamilies.

  • Toegevoegd zijn gevectoriseerde implementaties van:

    • find_end() en ranges::find_end voor elementen van 1 byte en 2 bytes.
    • basic_string::find() en basic_string::rfind() voor een subtekenreeks.
    • basic_string::rfind() voor één teken.
  • Samengevoegde C++23-defectrapporten:

    • P3107R5 toestaan een efficiënte uitvoering van <print>.
    • P3235R3std::print Meer typen sneller met minder geheugen.
  • GitHub Copilot

    • GitHub Copilot Free is nu beschikbaar. Ontvang 2000 code-voltooiingen en 50 chataanvragen per maand zonder kosten.

    • GitHub Copilot-code-aanvullingen bieden suggesties voor automatisch aanvullen direct in de code terwijl u programmeert. GitHub Copilot bevat andere relevante bestanden als context om de ervaring van C++-ontwikkelaars te verbeteren. Dit vermindert halluinaties en biedt relevantere en nauwkeurige suggesties.

    • U kunt nu een codebeoordeling aanvragen vanuit GitHub Copilot vanuit het venster Git-wijzigingen:

      Een schermopname van het venster Git Changes met de knop GitHub Copilot Review gemarkeerd.

      Het venster Git Changes is geopend met de knop GitHub Copilot Review gemarkeerd.

      GitHub Copilot zoekt naar mogelijke problemen en maakt opmerkingen voor deze problemen:

      een schermopname van GitHub Copilot waarin een probleem wordt uitgelegd.

      GitHub Copilot heeft een probleem gevonden met de regel als (is_enabled_) new_site.disable(). Het geeft aan dat het een fout kan zijn en dat het waarschijnlijk zou moeten zijn: als (is_enabled_) new_site.enable(), omdat de bedoeling lijkt te zijn om de nieuwe site in te schakelen als het breakpoint is ingeschakeld.

      Als u deze functie wilt gebruiken, moet u ervoor zorgen dat het volgende is ingeschakeld:

      • Extra>Opties>Voorbeeldfuncties>Opmerkingen bij pull requests
      • Tools>Options>GitHub>Copilot>Source Control Integration>Enable Git preview features.
    • GitHub Copilot Edits is een nieuwe functie die wijzigingen kan aanbrengen in meerdere bestanden in uw project. Als u een nieuwe bewerkingssessie wilt starten, klikt u op Nieuwe bewerkingssessie maken boven aan het GitHub Copilot Chat-venster:

      Een schermopname van het GitHub Copilot-chatvenster. De knop Nieuwe bewerkingssessie maken is gemarkeerd.

      Beschrijf de wijzigingen die u wilt aanbrengen en Copilot stelt de relevante wijzigingen voor. U kunt een voorbeeld van de bewerkingen één voor één bekijken en de gewenste bewerkingen accepteren of correcties aanbrengen:

      Een schermopname van het GitHub Copilot Chat-venster met de bestanden die zijn bewerkt.

      GitHub Copilot geeft een samenvatting weer van de wijzigingen die zijn aangebracht, zoals 1. Maak een nieuwe subklasse range_breakpoint in include/libsdb/breakpoint.hpp en 2. Implementeer de klasse range_breakpoint in src/breakpoint.cpp. Er wordt een optie weergegeven om de wijzigingen te accepteren.

      Zie Meerdere bestanden efficiënter herhalen met GitHub Copilot Editsvoor meer informatie.

  • CMake

    • Ondersteunt nu CMake Presets v9. Nieuwe macro-uitbreidingen in een vooraf ingesteld veld. Zie Macro-uitbreiding in de officiële CMake-documentatie voor meer informatie.

Wat is er nieuw voor C++ in Visual Studio versie 17.12

uitgebracht in november 2024

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.12
Standaardbibliotheek (STL) samengevoegde C++26- en C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Changelog 17.12
Nieuwe functies in Visual Studio 17.12 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.12
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.12 verbeteringen in de conformiteit met C++, gedragswijzigingen en bugfixes in Visual Studio 2022 17.12

Een kort overzicht van enkele van de nieuwe functies:

  • Verbeteringen van de standaardbibliotheek
    • C++23 Opmaakbereiken (P2286R8) implementatie voltooid. Er zijn formatters toegevoegd voor de containeradapters stack, queueen priority_queue.
    • Multidimensionale subscriptoperators toegevoegd, die ook ondersteuning bieden voor <mdspan>. Voorbeeld: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Ontwikkelen van games in C++
  • Inzichten opbouwen
    • U kunt Build Insights uitvoeren op geselecteerde bestanden. Selecteer de gewenste bestanden in de Solution Explorer-, klik met de rechtermuisknop en kies Build Insights uitvoeren op geselecteerde bestanden: Een schermafbeelding van bestanden in Solution Explorer. Het contextmenu is geopend en de optie voor het uitvoeren van Build Insights voor geselecteerde bestanden is gemarkeerd.
    • U kunt resultaten van Build Insights filteren op project. Klik op de filterknop in de filterkolomkop en selecteer de projecten waarvoor u resultaten wilt zien: Een schermopname van het venster Inzichten opbouwen met het tabblad Opgenomen bestanden geopend. De filterknop is geselecteerd en er wordt een lijst met projecten weergegeven. Selectievakjes naast Twee projecten zijn ingeschakeld.
    • Klik op het vraagtekenpictogram in het venster Inzichten maken om een korte beschrijving te zien voor de tabbladen in het venster Inzichten bouwen en een koppeling naar de documentatie voor een gedetailleerde uitleg: Een schermopname van het venster Inzichten maken met de knop Uitleg weergeven (een vraagteken in een cirkel) gemarkeerd.
  • GitHub Copilot
    • U kunt op Vraag Copilot naast de waarde van een variabele klikken om AI-gestuurde inzichten te krijgen in wat tot de huidige toestand heeft geleid. Het volgende programma heeft bijvoorbeeld een off-by-one-fout in de lusvoorwaarde:

    Een schermopname van het venster Autos. De variabele met de naam it is NULL. Het Ask Copilot-pictogram ernaast is gemarkeerd.

    De code die dit probleem heeft veroorzaakt, is: voor (auto it = h.animals_.begin(); het <= h.animals_.end(); it++).

    Als u op het Ask Copilot-pictogram voor de variabele it klikt, wordt aangegeven waarom het als <NULL>wordt beschouwd:

    Een schermopname van een GitHub Copilot-venster.

    Deze fout bevindt zich in een functie die is gedefinieerd als int calculate_number_of_cats(const house& h). Het GitHub Copilot-bericht zegt: "De waarde van de expressie is NULL, wat betekent dat de iterator niet verwijst naar een geldig element in de vector animals_. In de context van uw programma moet het worden herhaald over de animals_ vector in het huisobject om het aantal kattenobjecten te tellen. Waarom het null is. Gebaseerd op de lokale variabelen en de context van de oproepstack: het object 'huis' h heeft een lege dieren_ vector (grootte=0). De lusvoorwaarde <= h.animals_.end() is onjuist. Dit moet het zijn != h.animals_.end()."

    • U kunt klikken op Copilot- vragen over fouten in de foutenlijst van Visual Studio om hulp te krijgen bij de fout en een voorgestelde oplossing. Voorbeeld:

    Een schermopname van het venster Foutenlijst.

    Het pictogram Ask Copilot is gemarkeerd naast een fout waarbij unique_ptr probeert te verwijzen naar een verwijderde functie.

    Als u op Ask Copilot klikt, wordt u geïnformeerd over de fout:

    Een schermopname van de GitHub Copilot-uitleg voor de fout.

    Het Copilot-bericht zegt: "De fout treedt op omdat de op een bereik gebaseerde for-lus heeft geprobeerd std::unique_ptr-objecten te kopiëren, wat niet is toegestaan omdat std::unique_ptr niet kan worden gekopieerd. Om dit op te lossen heb ik de lus gewijzigd om een verwijzing te gebruiken om te voorkomen dat de std::unique_ptr objecten worden gekopieerd. Op deze manier doorloopt de lus verwijzingen naar de std::unique_ptr objecten, die zijn toegestaan.

  • foutopsporing
    • Nieuwe visualisaties voor foutopsporing voor mutex, recursive_mutexen move_iterator.
    • De debugger geeft nu inline geretourneerde waarden weer: Een screenshot van een tooltip met de waarde 8,25. Dit is het resultaat van de expressie na de retourinstructie die is zwartgeschreven.

Wat is er nieuw voor C++ in Visual Studio versie 17.11

uitgebracht in augustus 2024

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.11
Standaardbibliotheek (STL) samengevoegde C++26- en C++23-functies, C++20-defectrapporten, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Changelog 17.11
Nieuwe functies in visual Studio 17.11 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.11
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.11 C++-conformiteit verbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022 17.11

Een gedeeltelijke lijst met nieuwe functies:

  • Verbeteringen standaardbibliotheek

    • De implementatie van de opgemaakte uitvoer bevat nu std::range_formatter en formatters voor std::pair en std::tuple.
    • Er is ondersteuning toegevoegd voor std::println() zonder argumenten. Hiermee wordt een lege regel afgedrukt zoals voorgesteld in P3142R0.
    • Verbeterde vectorisatie voor verschillende algoritmen, waaronder replace_copy(), replace_copy_if(), ranges::replace_copy, ranges::replace_copy_if, find_first_of() en ranges::find_first_of, voor 8-bits en 16-bits elementen, mismatch(), ranges::mismatch, count()ranges::count, find(), ranges::find, ranges::find_lasten ranges::iota.
  • Gameontwikkeling in C++

    • U kunt nu algemene Unreal Engine-klassesjablonen, -modules en -invoegtoepassingen toevoegen vanuit Visual Studio. Zie Unreal Engine-klassen, modules en invoegtoepassingen toevoegen in Visual Studiovoor meer informatie.
    • De nieuwe werkbalk Unreal Engine biedt snelle toegang tot aan Unreal Engine gerelateerde acties vanuit Visual Studio. Met de werkbalk kunt u snel koppelen aan Unreal Engine-processen, de cache van blauwdrukken opnieuw scannen, snel toegang krijgen tot het Unreal Engine-logboek en snelle toegang bieden tot de unreal engine-configuratiepagina voor Visual Studio. Zie Unreal Engine Toolbarvoor meer informatie.
    • U kunt nu traceringsresultaten filteren op project. Ook worden in elke rij het relatieve pad en de bestandsnaam weergegeven in plaats van het volledige pad. Resultatengroepering in de opgenomen bestanden weergave is ook verbeterd:

    Een schermopname van de verbeterde diagnostische resultaten van opgenomen bestanden.

    De weergave Opgenomen bestanden heeft een nieuwe kolom voor het project. De kolom Project is geselecteerd en projecten zoals (Alles selecteren), CompilerIdC, OpenAL, algemeen, enzovoort, worden geselecteerd. De bijgevoegde bestanden worden weergegeven door relatief pad en bestandsnaam en gegroepeerd.

  • CMake-debugging

    • U kunt nu fouten opsporen in uw CMake-scripts en CMakeLists.txt bestanden in het Visual Studio-foutopsporingsprogramma voor CMake-projecten die gericht zijn op Linux via Windows Subsystem voor Linux (WSL) of SSH. Als u een CMake-foutopsporingssessie in Visual Studio wilt starten, stelt u een onderbrekingspunt in uw CMakeLists.txt bestand in en navigeert u vervolgens naar Project>Cache configureren met CMake-foutopsporing.
  • GitHub Copilot

    • Wanneer u met de muis boven symbolen in de code-editor zweeft, klikt u op de Copilot-knop Vertel me meer in het Quick Info-dialoogvenster om meer te weten te komen over een bepaald symbool.

    Een schermopname van het venster Snelle informatie.

    Het venster Snelle informatie wordt boven een functie weergegeven. De koppeling Meer informatie is gemarkeerd.

    • GitHub Copilot kan naamgevingssuggesties genereren voor uw id's (variabelen, methoden of klassen) op basis van de manier waarop uw id wordt gebruikt en de stijl van uw code.

      Een schermopname van het dialoogvenster Naam wijzigen van GitHub Copilot.

      Het dialoogvenster Naam wijzigen heeft een veld Nieuwe naam met een vervolgkeuzelijst waarin deze opties worden weergegeven: text_color, font_color, display_color, console_color en menu_text_color.

    U hebt een actief GitHub Copilot-abonnement nodig. Klik met de rechtermuisknop op de variabele die u wilt wijzigen en kies Naam wijzigen (Ctrl+R, Ctrl+R). Selecteer het sparklepictogram van GitHub Copilot om naamgevingssuggesties te genereren.

  • foutopsporing

    • Voorwaardelijke onderbrekingspunten in C++ zijn sneller.
  • diagnostische verbeteringen

    • Verbeterde diagnose bij het aanroepen van std::get<T> op een std::tuple met meerdere exemplaren van T in de sjabloonargumenten. MSVC rapporteerde vroeger:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Nu wordt het volgende gerapporteerd:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Verbeterde diagnostische gegevens wanneer std::ranges::to het aangevraagde resultaat niet kan samenstellen. MSVC rapporteerde vroeger:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Nu wordt het volgende gerapporteerd:
      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)'

Wat is er nieuw voor C++ in Visual Studio versie 17.10

uitgebracht in mei 2024

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.10
Standaardbibliotheek (STL) samengevoegde C++26- en C++23-functies, C++20-defectrapporten, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Changelog 17.10
Nieuwe functies in visual Studio 17.10 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.10
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.10 Verbeteringen in C++-conformiteit, gedragswijzigingen en bugfixes in Visual Studio 2022 17.10

Een gedeeltelijke lijst met nieuwe functies:

  • MSVC Toolset Update: de msVC-toolsetversie wordt bijgewerkt van 19.39 tot 19.40. Dit kan van invloed zijn op projecten met versie-veronderstellingen. Zie MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10voor meer informatie over een aantal manieren waarop dit van invloed is op projecten die ervan uitgaan dat MSVC-versies 19.3X zijn voor Visual Studio 2022.
  • Standaardbibliotheekverbeteringen: de standaardbibliotheek heeft ondersteuning toegevoegd voor P2510R3 opmaakpunten, waarmee de set opmaakaanduidingen voor aanwijzers wordt toegevoegd wanneer std::format meer in overeenstemming is met de aanduidingen die al bestaan voor gehele getallen. Verbeterde gevectoriseerde implementaties van std::min_element, std::ranges::minen vrienden.
  • Build Insights: bevat nu sjablooninstantiegegevens. Zie Sjablonenweergave voor Build Insights in Visual Studio of de Pure Virtual C++-Sjablonenweergave voor Build Insights in Visual Studio opname.
  • Unreal Engine Plugin: er is een nieuwe opt-in-functie voor de Unreal Engine-invoegtoepassing die op de achtergrond kan worden uitgevoerd, waardoor de opstartkosten worden verlaagd. Dit is een opt-in-functie die wordt geactiveerd via Tools>Options>Unreal Engine.
  • Nieuwe functies voor Linux-: zie Nieuwe Linux-ontwikkelfuncties in Visual Studio.
  • CMake Targets: U kunt nu doelen vastmaken in de CMake Targets View.
  • Connection Manager UX: De gebruikerservaring biedt een vloeiendere ervaring bij het verbinden met externe systemen. Zie Bruikbaarheidsverbeteringen in visual Studio Connection Managervoor meer informatie.
  • opmerkingen bij pull-aanvragen: u kunt nu gitHub- en Azure DevOps-opmerkingen rechtstreeks in uw werkbestand bekijken. Schakel de functievlag in, opmerkingen bij pull-aanvragen in Opties>Omgeving>Preview-functies en controleer de pull-aanvraagvertakking om aan de slag te gaan.
  • AI-Generated Content: GitHub Copilot kan nu beschrijvingen van pull-aanvragen ontwerpen. Vereist een actief GitHub Copilot-abonnement. Probeer het uit door te klikken op de AI gegenereerde beschrijving van pull-aanvraag toevoegen glinsterende pen pictogram binnen het venster 'Pull-aanvraag maken'.
  • afbeeldingsvoorbeeld: beweeg de muisaanwijzer over een afbeeldingspad om een voorbeeld met groottedetails weer te geven. De grootte is beperkt tot 500 px breed en hoog.

    Schermafbeelding van het zweefvoorvertoning-voorbeeld.

    De muisaanwijzer beweegt over de regel std::filesystem::path vs_logo_path = "../images/vs_logo.png". Hieronder ziet u een voorbeeld van het Visual Studio-logo en de informatie dat het 251 x 500 pixels en 13,65 kB groot is.

  • Onderbrekingspunt/Tracepoint aanmaken: U kunt nu voorwaardelijke onderbrekingspunten of tracepunten direct vanuit expressies in de broncode aanmaken via het contextmenu. Dit werkt op eigenschaps- of veldnamen en -waarden van autos, lokalen, kijkvensters of DataTips.
  • dialoogvenster Bijvoegen aan proces: de functionaliteit van het dialoogvenster Bijvoegen aan proces is gebruiksvriendelijker. U kunt nu eenvoudig schakelen tussen structuur- en lijstweergaven, processen beter organiseren met samenvouwbare secties en codetypen selecteren met een vereenvoudigde keuzelijst met invoervak. Bovendien is de functie Venster selecteren/bijhouden nu eenvoudiger te gebruiken, waardoor bijhouden in twee richtingen mogelijk is: als u een proces selecteert, wordt het venster gemarkeerd en wordt het proces geselecteerd door op een venster te klikken.
  • GitHub Copilot Integration: GitHub Copilot- en Copilot Chat-extensies zijn nu geïntegreerd en worden nu rechtstreeks verzonden in Visual Studio. Installeer het door het GitHub Copilot-onderdeel te installeren in de Visual Studio Installer.

    schermopname van de installatieoptie GitHub Copilot van Visual Studio Installer.

    De GitHub Copilot-interface bevindt zich in de rechterbovenhoek van Visual Studio. Als u dit wilt gebruiken, hebt u een actief GitHub Copilot-abonnement nodig.

    Schermafbeelding van de knop GitHub Copilot.

    De Knop GitHub Copilot wordt weergegeven in de rechterbovenhoek van Visual Studio. Er zijn opties om een chatvenster te openen, GitHub Copilot-instellingen, meer informatie en copilot-abonnement te beheren.

Wat is er nieuw voor C++ in Visual Studio versie 17.9

Februari 2024 uitgebracht

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.9
Standaardbibliotheek (STL) samengevoegde C++23-functies, prestatieverbeteringen, verbeterd gedrag, oplossingen voor LWG-problemen en opgeloste bugs STL Changelog 17.9
Nieuwe functies in visual Studio 17.9 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.9
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.9 C++ Conformance-verbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022
Samenvatting van C++ back-endupdates MSVC-back-endupdates sinds Visual Studio 2022 versie 17.3

Een gedeeltelijke lijst met nieuwe functies:

  • #include diagnostiek, die een gedetailleerde analyse van uw #include instructies biedt. Activeer deze functie door met de rechtermuisknop op een #include te klikken en #include directives te kiezen>Zet diagnostiek voor #include directives aan. Boven elke #include is het aantal keren dat uw code verwijst naar het bestand #include. Klik op de verwijzing koppeling om te navigeren naar de locatie waar uw code iets uit dat headerbestand gebruikt. Als u de buildtijd van uw #include-instructies wilt bekijken, voert u Build Insights uit door naar Build>Build Insights uitvoeren op Oplossing>Buildte gaan.

    Schermopname van #include diagnostische gegevens.

    Boven de #-include is een koppeling **reference** en veel van de verwijzingen naar dit #include-bestand (in dit geval 1). De buildtijd wordt ook vermeld (in dit geval minder dan 1/2 per seconde).

  • Visualisatie van geheugenindeling, die laat zien hoe geheugen is gerangschikt voor uw klassen, structs en samenvoegingen. Beweeg de muisaanwijzer over een type en kies de koppeling Geheugenindeling in de Snelle info om een speciaal venster te openen waarin de geheugenindeling van het geselecteerde type wordt weergegeven. Als u de muisaanwijzer boven afzonderlijke gegevenstypen in dit venster houdt, vindt u gedetailleerde informatie over de grootte en verschuiving binnen het type.

    Schermopname van het venster geheugenindeling

    In het venster geheugenindeling ziet u de inhoud van de klasse Snake. Het toont de geheugenverschuivingen van de verschillende velden van de klasse, zoals puntklassen voor de locatie van het hoofd en de hoofdtekst, de score, enzovoort.

  • U kunt nu uw eigen aangepaste CMake-uitvoerbare bestand opgeven. Deze functie is handig als u een specifieke versie van CMake wilt gebruiken die niet bij Visual Studio wordt geleverd. Ga naar Tools>Options en selecteer CMake>General. Selecteer Aangepaste CMake-uitvoerbare inschakelen en geef het mappad van het uitvoerbare CMake-bestand op.

    Schermopname van het dialoogvenster CMake-opties

    Het dialoogvenster voor CMake-opties met de optie "Aangepast CMake-uitvoerbaar bestand inschakelen" en het veld "CMake-uitvoerbare map" gemarkeerd.

  • Verbeterde IntelliSense voor Unreal Engine-projecten.
  • Verbeterde C++23-ondersteuning: std::format en std::spanformattable, range_format, format_kinden set_debug_format() als onderdeel van P2286R8 opmaakbereiken<mdspan> per P0009R18 en volgende wijzigingen in de tekst die zijn toegepast op de C++23 Standard. format() kan ook aanwijzers per P2510R3opmaken.

Wat is er nieuw voor C++ in Visual Studio versie 17.8

uitgebracht in november 2023

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.8
Standaardbibliotheek (STL) samengevoegde C++26, C++23-functies, C++20-extensies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Wijzigingslogboek 17.8
Nieuwe functies in visual Studio 17.8 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.8
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.8 verbeteringen in C++-conformiteit, veranderingen in gedrag en bugfixes in Visual Studio 2022
Een overzicht van C++-verbeteringen in Visual Studio, VS Code en vcpkg in 2023 Een jaar C++-verbeteringen

Een gedeeltelijke lijst met nieuwe functies:

  • Gestructureerde diagnostische gegevens van C++ in het venster Uitvoer en een nieuw venster met details van het probleem dat meer informatie over de fout biedt. Voor meer informatie, zie Structured SARIF Output en Problem Details Window.
  • Een functie waarmee u de grootte en uitlijning van uw klassen, structs, samenvoegingen, basistypen of opsommingen kunt visualiseren, zelfs voordat de code wordt gecompileerd. Beweeg de muisaanwijzer over de identificatie en er verschijnt snelle informatie over de grootte en uitlijning.
  • Een functie die aangeeft wanneer lidfuncties moeten worden gemarkeerd const omdat ze de status van het object niet wijzigen. Beweeg de muisaanwijzer over een lidfunctie en klik op het gloeilamppictogram om de functie als constte markeren.
  • Visual Studio vraagt u nu om globale functies als statisch te markeren via een schroevendraaierpictogram dat wordt weergegeven met de naam van de functie. Klik op het schroevendraaierpictogram om de functie als statisch te markeren.
  • Ongebruikte #include instructies worden grijs weergegeven in de editor. U kunt de muisaanwijzer op een gedimde include bewegen en het gloeilampmenu gebruiken om die include of alle ongebruikte includes te verwijderen. U kunt ook #include richtlijnen toevoegen voor entiteiten die indirect zijn opgenomen via andere headers. Zie C/C++ opschonen in Visual Studiovoor meer informatie.
  • Meer ondersteuning voor Unreal Engine:
    • Met unreal Engine Test Adapter kunt u uw Unreal Engine-tests detecteren, uitvoeren, beheren en fouten opsporen zonder de Visual Studio IDE te verlaten.
    • Met Unreal Engine-codefragmenten kunt u algemene Unreal Engine-constructies vinden als fragmenten in uw ledenlijst.
    • Build Insights is nu geïntegreerd met Visual Studio 2022 en werkt met MSBuild- en CMake-projecten met behulp van MSVC. U kunt nu aanvullende informatie bekijken over de compilatie van een functie, zoals hoe lang het duurde voor het compileren en het aantal ForceInlines, en de impact van headerbestanden op buildtijd. Zie voor meer informatie Zelfstudie: Problemen met functie-inlijningsproces tijdens de buildtijd oplossen en Zelfstudie: Impact van headerbestanden op buildtijd oplossen.
  • Met de testondersteuning voor externe Linux-eenheden kunt u nu uw CTest- en GTest-tests uitvoeren op uw externe Linux-machines vanuit De Test Explorer van Visual Studio, net zoals uw lokale tests.

Wat is er nieuw voor C++ in Visual Studio versie 17.7

uitgebracht in augustus 2023

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++-ontwikkelaars in Visual Studio 2022 17.7
Nieuwe C++-functies die specifiek zijn voor gameontwikkeling De kracht van Visual Studio 2022 voor C++ Game Development
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Changelog 17.7
Nieuwe functies in visual Studio 17.7 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.7
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.7 Verbeteringen in de C++-conformiteit, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies:

  • Snellere foutopsporingssessies en snellere laadtijden van projecten
  • Stapsgewijze visualisatie van macro-uitbreiding
  • Downloaden met één klik voor Windows-subsysteem voor Linux (WSL)
  • Verbeterde ondersteuning voor Doxygen-opmerkingen
  • C++ Build Insights voor gameontwikkeling
  • Er is /std:clatest toegevoegd voor de C-compiler.
  • Onreal Engine-projectverbeteringen, zoals snellere IntelliSense- en syntaxiskleuring, de mogelijkheid om alle Unreal Engine Blueprint-verwijzingen te vinden, en meer.

Wat is er nieuw voor C++ in Visual Studio versie 17.6

uitgebracht in mei 2023

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++ ontwikkelaars in Visual Studio 2022 17.6
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Changelog 17.6
Nieuwe functies in visual Studio 17.6 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.6
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.6 C++ conformiteitsverbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies omvat:

  • Foutopsporing in het CMake-script
  • Ingebouwde ondersteuning voor HLSL (High Level Shading Language)
  • Logboekviewer van unreal engine
  • VCPKG wordt nu standaard toegevoegd
  • Initiële ondersteuning voor C++20 in C++/CLI-projecten en enkele functies uit de C++23-standaardbibliotheek voor reeksen.

Wat is er nieuw voor C++ in Visual Studio versie 17.5

uitgebracht februari 2023

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++ ontwikkelaars in Visual Studio 2022 17.5
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Changelog 17,5
Nieuwe functies in visual Studio 17.5 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.5

Een gedeeltelijke lijst met nieuwe functies omvat:

  • std::move, std::forward, std::move_if_noexcepten std::forward_like nu geen functieaanroepen in gegenereerde code produceren, zelfs niet in de foutopsporingsmodus. Deze wijziging voorkomt benoemde casts die onnodige overhead veroorzaken in builds voor foutopsporing. /permissive- (of een optie die dit impliceert, zoals /std:c++20 of std:c++latest) is vereist.

  • [[msvc::intrinsic]]toegevoegd. U kunt dit kenmerk toepassen op niet-recursieve functies die bestaan uit één cast, die slechts één parameter hebben.

  • Er is ondersteuning toegevoegd voor De Linux-console in de geïntegreerde terminal, waardoor terminal-I/O mogelijk is.

  • Eerste experimentele ondersteuning toegevoegd voor C11 atomische primitieven (<stdatomic.h>). U kunt deze experimentele functie inschakelen met de optie /experimental:c11atomics in /std:c11 modus of hoger.

  • Er is een nieuwe set experimentele controles met hoge betrouwbaarheid toegevoegd aan de Levensduurcontrole voor verminderde ruis.

  • Met een nieuwe preview-functie, Remote File Explorer, kunt u de bestandsmap op uw externe computers in VS bekijken en bestanden ernaar uploaden en downloaden.

  • Versiebeheer van uitvoerbare CMake-bestanden die met Visual Studio zijn geleverd, gewijzigd zodat deze overeenkomen met Kitware-versies.

  • Ondersteuning toegevoegd voor Hot Reload aan de CMake Project-sjabloon.

  • Vanaf nu gebruikt 'Ga naar definitie voor C++' een subtielere indicator voor de tijdsduur van de bewerking, ter vervanging van het modale dialoogvenster uit eerdere versies.

  • Het uitrollen van een experiment is gestart dat meer slimme resultaten biedt in de C++-autocompletion en ledenlijst. Deze functionaliteit werd voorheen Predictive IntelliSense genoemd, maar gebruikt nu een nieuwe presentatiemethode.

  • We verzenden nu een systeemeigen Arm64 Clang-toolset met onze LLVM-workload, waardoor systeemeigen compilatie op Arm64-machines mogelijk is.

  • Lokalisatie toegevoegd aan de Image Watch Extension (deze extensie is beschikbaar in Marketplace en is niet gebundeld via het Installatieprogramma van Visual Studio).

  • Er is ondersteuning toegevoegd voor het openen van een Terminal-venster in de momenteel actieve ontwikkelaarscontainer.

  • Verschillende verbeteringen aangebracht aan de IntelliSense-macro-uitbreiding. Met name hebben we recursieve uitbreiding in meer contexten ingeschakeld en we hebben opties toegevoegd aan het pop-upvenster om de uitbreiding naar het klembord te kopiëren of de macro inline uit te vouwen.

  • Gelijktijdige bewaking wordt nu ondersteund in de seriële monitor. Met gelijktijdige bewaking kunt u meerdere poorten tegelijk naast elkaar bewaken. Druk op de plusknop om een andere seriële monitor te openen en aan de slag te gaan.

  • U kunt nu eigenschappen bekijken van basisklassen die zijn gewijzigd in een Unreal Blueprint-asset zonder Visual Studio te verlaten. Dubbelklik in een blauwdrukverwijzing voor een C++-klasse of -eigenschap om de UE Asset Inspector in Visual Studio te openen.

  • Ingeschakeld voor het uitvoeren van DevContainers op een externe Linux-computer.

  • Mogelijkheid ingeschakeld om meerdere doelen te selecteren voor het bouwen in de CMake-doelenweergave.

  • Er is ondersteuning toegevoegd voor CMakePresets.json versie 5. Zie de CMake-documentatie voor informatie over nieuwe functies.

  • Test Explorer ingeschakeld om meerdere CMake-doelen parallel te bouwen en te testen.

  • Optie Container openen in terminal toegevoegd aan Dev Containers.

  • Standaardbibliotheekfuncties geïmplementeerd:

    • P2508R1basic_format_string, format_string, wformat_string
    • P2322R6ranges::fold_left, ranges::fold_rightenzovoort.
    • P2321R2views::zip (bevat geen zip_transform, adjacenten adjacent_transform)

Wat is er nieuw voor C++ in Visual Studio versie 17.4

uitgebracht in november 2022

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Wat is er nieuw voor C++ ontwikkelaars in Visual Studio 2022 17.4
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Wijzigingslogboek 17.4
Nieuwe functies in visual Studio 17.4 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.4
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.4 C++-conformiteit verbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies in 17.4:

  • Verbeterde compilerfoutberichten om meer juiste en nuttige informatie te bieden, met name voor concepten.

  • Experimentele MSVC-optie /experimental:log<directory> toegevoegd voor uitvoer gestructureerde SARIF-diagnostische aan de opgegeven map.

  • Ondersteuning toegevoegd voor C23-kenmerken aan IntelliSense en verdere voortgang in de ondersteuning van C++20-modules.

  • Verbeterde indexeringsprestaties bij het openen van een nieuwe oplossing. Grote projecten kunnen een verbetering van 20-35% zien ten opzichte van 17,3.

  • Verbeterde optimalisatie van benoemde retourwaarde (NRVO):

    • NRVO is ingeschakeld voor gevallen waarbij uitzonderingsafhandeling of -lussen zijn betrokken.
    • NRVO is ingeschakeld, zelfs onder /Od als de gebruiker de optie /Zc:nrvo of /std:c++20 of hoger of /permissive-doorgeeft.
    • U kunt NRVO nu uitschakelen met de optie /Zc:nrvo-.
  • De versie van LLVM bijgewerkt die met Visual Studio is verzonden naar 15.0.1. Zie de releaseopmerkingen van de LLVM- en Clang voor meer informatie over wat er beschikbaar is.

  • Ondersteuning toegevoegd aan Visual Studio voor vcpkg-artefacten met CMake-projecten. Voor projecten die een vcpkg-manifest bevatten, wordt de omgeving automatisch geactiveerd bij het openen van het project. Meer informatie over deze functie vindt u in de vcpkg-omgevingsactivering in Visual Studio blogbericht.

  • U kunt nu Dev Containers gebruiken voor uw C++-projecten. Meer informatie over deze functie vindt u in onze blogpost Dev Containers for C++.

  • IntelliSense respecteert nu de volgorde van vooraf toegevoegde headers wanneer een van hen een PCH is. Voorheen, wanneer een PCH werd gebruikt via /Yu en gedwongen mee te nemen via /FI, verwerkte IntelliSense deze altijd eerst, voordat andere headers via /FIwerden opgenomen. Dit gedrag komt niet overeen met het gedrag tijdens het bouwen. Met deze wijziging worden /FI headers verwerkt in de volgorde waarin ze zijn opgegeven.

  • Interne voorvoegsels zijn verwijderd uit CTest-namen in Test Explorer.

  • De versie van CMake bijgewerkt die met Visual Studio is verzonden naar versie 3.24.1. Zie de releaseopmerkingen van CMakevoor meer informatie over wat er beschikbaar is.

  • Android SDK-update:

    • Antscripts zijn verwijderd, zodat gebruikers geen ant-sjablonen meer zien in het dialoogvenster Nieuw project. Zie voor hulp bij het migreren van Ant-sjablonen naar Gradle-sjablonen Migreren van builds van Apache Ant
    • Ondersteuning toegevoegd voor bouwen met NDK 23 en 24
    • NDK-onderdeel bijgewerkt naar LTS versie 23
  • Gevectoriseerde implementaties van ranges::min_element(), ranges::max_element()en ranges::minmax_element() toegevoegd

  • We blijven de nieuwste ontwikkelingen in de C++-standaardisatie volgen. Ondersteuning voor deze C++23-functies is beschikbaar door /std:c++latest in uw compileropties op te nemen:

    • P2302R4ranges::contains, ranges::contains_subrange

    • P2499R0string_view Rangeconstructor moet explicit zijn

    • P0849R8auto(x): vervalkopie in de taal

      (Het compileronderdeel is nog niet geïmplementeerd. Het bibliotheekonderdeel is geïmplementeerd in C++20-modus toen ondersteuning voor ranges in eerste instantie werd geïmplementeerd.)

    • P0881R7<stacktrace>

    • P2301R1 Een pmr-alias toevoegen voor std::stacktrace

    • P1328R1constexpr type_info::operator==()

    • P2440R1ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2views::join_with

  • Er is een optie 'Navigatie na declaratie/definitie maken' toegevoegd, zodat u het navigatiegedrag van de functie Declaratie/Definitie maken kunt kiezen. U kunt kiezen tussen een korte weergave (de standaardinstelling) of het openen van het document, of geen navigatie.

  • Arm64-builds van Visual Studio bundelen nu Arm64-versies van CMake en Ninja.

  • Er is ondersteuning toegevoegd voor CMake Presets versie 4. Zie de releaseopmerkingen van CMakevoor meer informatie over wat er beschikbaar is.

  • Externe systeemverbindingen met Connection Manager nu ondersteuning bieden voor SSH ProxyJump. ProxyJump wordt gebruikt voor toegang tot een SSH-host via een andere SSH-host (bijvoorbeeld voor toegang tot een host achter een firewall).

Wat is er nieuw voor C++ in Visual Studio versie 17.3

uitgebracht in augustus 2022

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars C++ verbeteringen in 17.3
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Changelog 17.3
Nieuwe functies in visual Studio 17.3 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.3
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.3 verbeteringen in C++ Conformance, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies in 17.3:

  • De Arm64EC-hulpprogrammaketen is niet meer gemarkeerd als experimenteel en is gereed voor productiegebruik.
  • Visual Studio Terminal kan nu worden gebruikt als een SSH-client met uw opgeslagen SSH-verbindingen. Als de C++ voor Linux Tools is geïnstalleerd, opent u het Terminal-hulpprogrammavenster. De vervolgkeuzelijst Terminal wordt gevuld met uw opgeslagen verbindingen. Wanneer u een verbinding selecteert, wordt er een nieuw Terminal-venster geopend in Visual Studio met een pseudoterminal op uw externe systeem. Besturingstekens, kleuren en cursorpositiebewustheid worden allemaal ondersteund.
  • Visual Studio kan nu Unreal Engine-klassesjablonen toevoegen voor uw UE-projecten. Als u deze functie wilt proberen, moet u ervoor zorgen dat IDE-ondersteuning voor Unreal Engine is geselecteerd in de Game-ontwikkeling met C++ workload in het Visual Studio-installatieprogramma. Wanneer u aan een UE-project werkt, klikt u met de rechtermuisknop in het project of een map/filter en selecteert u Toevoegen>UE-klasse.
  • Go to Definition onthoudt nu de vorige handtekening en navigeert dienovereenkomstig wanneer er geen betere overeenkomst beschikbaar is (bijvoorbeeld nadat u de handtekening van een van de twee handmatig hebt gewijzigd). De reactiesnelheid van Ga naar alles is verbeterd. Eerder verschenen de resultaten nadat u niet meer hebt getypt. In de nieuwe ervaring worden de resultaten weergegeven terwijl u typt.
  • In contexten waarvoor enum typevoltooiing is vereist (bijvoorbeeld toewijzingen aan enum variabelen, caselabels, het retourneren van enum type, enzovoort), wordt de lijst met automatisch aanvullen nu gefilterd op alleen de overeenkomende opsommingen en gerelateerde constructies.
  • NuGet PackageReference-ondersteuning toegevoegd voor C++/CLI MSBuild-projecten gericht op .NET Core. Deze wijziging is aangebracht om gemengde codebases te deblokkeren van de mogelijkheid om .NET Core te gebruiken. Deze ondersteuning werkt niet voor andere C++-projecttypen of C++-projecttypen die gericht zijn op .NET Framework. Er zijn geen plannen om packageReference-ondersteuning uit te breiden naar andere C++-scenario's. Het team werkt aan afzonderlijke ervaringen met betrekking tot vcpkg voor niet-MSBuild-scenario's en om meer functionaliteit toe te voegen.
  • Er is een Serial Monitor-venster toegevoegd voor embedded development, beschikbaar via Debug>Windows>Serial Monitor.
  • Verbeterde C++ indexering met ~66% in vergelijking met 17.2.
  • De versie van CMake bijgewerkt die met Visual Studio is verzonden naar versie 3.23. Zie de releaseopmerkingen van CMake 3.23 voor meer informatie over wat er beschikbaar is.
  • Upgrade van de versies van LLVM-hulpprogramma's die zijn geleverd met Visual Studio naar v14. Zie de releaseopmerkingen voor LLVM- en Clang voor meer informatie over wat er beschikbaar is.
  • De side-by-side Dev 16.11 C++ Toolset bijgewerkt naar versie 14.29.30145.00. De nieuwste versie van de Dev 16.11 C++ Toolset bevat belangrijke bugfixes, waaronder het herstellen van alle resterende C++20 defectrapporten. Zie de releaseopmerkingen van Visual Studio 2019 versie 16.11.14voor meer informatie over foutoplossingen, waaronder C++20 defectrapporten in Dev 16.11.
  • Verschillende verbeteringen aangebracht in de beleving van C++-modules in de editor. We werken voortdurend aan het verbeteren van de kwaliteit van de ervaring, maar raden u aan om ze in 17.3 uit te proberen. Meld resterende problemen via Developer Community-.

Wat is er nieuw voor C++ in Visual Studio versie 17.2

uitgebracht in mei 2022

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Visual Studio 2022 17.2 is nu beschikbaar
Standaardbibliotheek (STL) samengevoegde C++20-defectrapporten, C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Wijzigingslogboek 17.2
Nieuwe functies in de IDE van Visual Studio 17.2 Releaseopmerkingen voor Visual Studio 2022 versie 17.2
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.2 C++ Conformance-verbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies in 17.2:

  • Er is compilerondersteuning toegevoegd voor de C++23-functie voor het afleiden van this, beschikbaar met de optie /std:c++latest.
  • IntelliSense-ondersteuning toegevoegd voor C++23-functionaliteiten deduceren van this en if consteval.
  • Ondersteuning voor inline parameternaam en type hint toegevoegd, door op Alt+F1 te drukken of door dubbel te tikken op Ctrl. Dit gedrag kan worden aangepast onder Extra > Opties > Teksteditors > C/C++ > IntelliSense.
  • Experimentele ondersteuning toegevoegd voor C++20-modules in CMake-projecten. Deze ondersteuning is momenteel alleen beschikbaar met de Visual Studio (MSBuild)-generator.
  • In 17.1 hebben we randapparatuurregister en RTOS-weergaven geïntroduceerd voor ingesloten ontwikkelaars. We blijven de mogelijkheden van deze weergaven verbeteren met bruikbaarheidsverbeteringen in 17.2:
    • Het RTOS-hulpprogrammavenster is nu standaard verborgen. Hiermee voorkomt u dat er een taakvenster wordt weergegeven met foutberichten die niet relevant zijn wanneer u geen RTOS gebruikt.
    • Wanneer u dubbelklikt op een RTOS-object in het taakvenster, wordt er een horloge voor het object toegevoegd.
    • Wanneer u de begin- en eindwaarden voor de stackpointer selecteert in het venster van het RTOS-hulpprogramma, wordt deze geopend in het geheugenvenster.
    • Thread-bewustzijn voor apparaatdoelwitten toegevoegd aan het aanroepstack-venster.
    • Gebruikers kunnen nu een speldpictogram naast randapparaten, registers of velden selecteren om deze bovenaan in de Periferieweergave vast te zetten.
  • Er zijn implementaties toegevoegd van de resterende C++20-defectrapporten (ook wel bekend als backports). Alle C++20-functies zijn nu beschikbaar onder de optie /std:c++20. Zie de VS 2022 Changelog- in de Microsoft/STL GitHub-opslagplaats en de STL-blogpost van MSVC Completes /std:c++20 voor meer informatie over de geïmplementeerde backports.
  • We hebben verschillende C++23-bibliotheekfuncties toegevoegd die beschikbaar zijn onder de optie /std:c++latest. Zie de stl-opslagplaatswijzigingslogboekvoor meer informatie over de nieuwe functies.
  • Verbeterde prestaties van de eerste C++-indexering met maximaal 20%, afhankelijk van de diepte van de include-grafiek.

Wat is er nieuw voor C++ in Visual Studio versie 17.1

uitgebracht in februari 2022

Voor meer informatie over Zien!
Wat is er nieuw voor C++-ontwikkelaars Visual Studio 2022 17.1 is nu beschikbaar!
Standaardbibliotheek (STL) samengevoegde C++23-functies, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste fouten STL Changelog 17.1
Nieuwe functies in visual Studio 17.1 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.1
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.1 C++ Conformance-verbeteringen, gedragswijzigingen en bugfixes in Visual Studio 2022

Een gedeeltelijke lijst met nieuwe functies in 17.1:

  • Er wordt een nieuwe Vooraf ingestelde-sjabloon toegevoegd om CMake-projecten te configureren en te bouwen op een extern macOS-systeem met CMakePresets.json. U kunt ook CMake-doelen starten op een extern macOS-systeem en vervolgens op afstand fouten opsporen in het Visual Studio-foutopsporingsprogramma dat wordt ondersteund door GDB of LLDB.
  • U kunt nu fouten opsporen in kerndumps op een extern macOS-systeem vanuit Visual Studio met LLDB of GDB.
  • De versies van Clang en LLVM die worden geleverd met Visual Studio, worden bijgewerkt naar v13.
  • De CMake-integratie van Visual Studio is alleen actief wanneer een CMakeLists.txt wordt geïdentificeerd in de root map van de geopende werkruimte. Als een CMakeLists.txt wordt geïdentificeerd op een ander niveau van de werkruimte, wordt u gevraagd om de CMake-integratie van Visual Studio te activeren met een melding.
  • Nieuwe weergaven waarmee u randapparatuurregisters op microcontrollers en RTOS-objecten (real-time besturingssystemen) kunt inspecteren en ermee kunt werken, die beschikbaar zijn via Foutopsporing>Windows>Embedded-registers
  • Er is een nieuwe threadweergave toegevoegd voor RTOS-projecten, beschikbaar via Foutopsporing>Windows>RTOS-objecten. Zie Embedded Software Development in Visual Studiovoor meer informatie.

Wat is er nieuw voor C++ in Visual Studio versie 17.0

uitgebracht in november 2021

Voor meer informatie over Zien!
Nieuwe functies in visual Studio 17.0 IDE Releaseopmerkingen voor Visual Studio 2022 versie 17.0
Standaardbibliotheek (STL) samengevoegde C++23- en C++26-functies, C++20-defectrapporten, oplossingen voor LWG-problemen, prestatieverbeteringen, verbeterd gedrag en opgeloste bugs STL Changelog 17.0
Verbeteringen in de taalconformance in C++ in Visual Studio 2022 17.0 Verbeteringen in C++ Conformance, gedragswijzigingen en bugfixes in Visual Studio 2022 17.10

Een overzicht van enkele van de nieuwe functies in Visual Studio 2022 versie 17.0:

  • De Visual Studio IDE, devenv.exe, is nu een systeemeigen 64-bits toepassing.
  • De MSVC-toolset gebruikt nu standaard SHA-256-bronhashing in debugrecords. Voorheen gebruikte de toolset MD5 voor bron-hashing standaard.
  • De v143-buildhulpprogramma's zijn nu beschikbaar via het installatieprogramma van Visual Studio en in de zelfstandige buildhulpprogramma's.

Hot Reload voor systeemeigen C++

  • Hot Reload voor C++ maakt het mogelijk om veel soorten codebewerkingen uit te voeren op uw actieve app en deze toe te passen zonder dat u de uitvoering van apps hoeft te onderbreken met iets als een onderbrekingspunt.

Wanneer u in Visual Studio 2022 uw app start in het foutopsporingsprogramma, kunt u de knop Hot Reload gebruiken om uw toepassing te wijzigen terwijl deze nog steeds wordt uitgevoerd. Deze ervaring wordt mogelijk gemaakt door Native Edit and Continue. Zie Bewerken en Doorgaan (C++)voor meer informatie over ondersteunde bewerkingen.

  • Hot Reload ondersteunt CMake- en Open Folder-projecten.

WSL2-ondersteuning

  • U kunt nu systeemeigen bouwen en fouten opsporen in WSL2 zonder een SSH-verbinding tot stand te brengen. Zowel platformoverschrijdende CMake-projecten als OP MSBuild gebaseerde Linux-projecten worden ondersteund.

Verbeterde CMake-ondersteuning

  • Upgrade van de versie van CMake die met Visual Studio is verzonden naar versie 3.21. Zie de releaseopmerkingen van CMake 3.21voor meer informatie over wat er beschikbaar is in deze versie.

  • CMake Overview Pages worden bijgewerkt ter ondersteuning van CMakePresets.json.

  • U kunt nu uw CMake-projecten configureren en bouwen met CMake 3.21 en CMakePresets.json v3.

  • Visual Studio ondersteunt nu de optie buildPresets.targets in CMakePresets.json. Met deze optie kunt u een subset van doelen maken in uw CMake-project.

  • Het menu Project in CMake-projecten is gestroomlijnd en bevat opties voor 'Cache verwijderen en opnieuw configureren' en 'Cache weergeven'.

  • De /scanDependencies compileroptie geïmplementeerd om C++20-moduleafhankelijkheden voor CMake-projecten weer te geven, zoals beschreven in P1689R5. Het is een stap in de richting van ondersteuning voor het bouwen van op modules gebaseerde projecten met CMake en we werken aan het voltooien van deze ondersteuning in latere releases.

Verbeteringen in standaardbibliotheek

Hier worden verbeteringen voor de Standaardbibliotheek (STL) uitgelicht. Zie de Changelog-van het STL-team voor een uitgebreide lijst met nieuwe functionaliteit, wijzigingen, bugfixes en prestatieverbeteringen.

  • Visualisaties voor foutopsporing toegevoegd om de weergave van de volgende typen te verbeteren: source_location, bind_front(), u8string (en de iterators), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (en de iterator/sentinel), ranges::ref_view, thread, thread::id, jthreaden filesystem::path
  • [[nodiscard]] toegevoegd aan de stoi() familie van functies in <string> en aan verschillende functies in <locale> zoals de collate lidfuncties, has_facet()en de isalnum()- en tolower() families.
  • P0980R1 Gemaakt std::stringconstexpr in VS 2019 16.10. Nu ondersteund voor Clang.
  • P1004R2 Gemaakt std::vectorconstexpr in VS 2019 16.10. Nu ondersteund voor Clang.

uitgelichte C++23-functies

  • P1048R1 Toegevoegd is_scoped_enum, een nieuwe eigenschap voor de C++ Standard-bibliotheek, waarmee wordt gedetecteerd of een type een scoped enumeration is.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains() Voor basic_string en basic_string_view
  • P1682R3to_underlying() voor opsommingen
  • P2162R2 overnemen van std::variant toestaan
  • P2166R1 Verbiedt de constructie van basic_string en basic_string_view van nullptr. Deze verandering is een bronbrekende verandering. Code die eerder niet-gedefinieerd gedrag tijdens runtime had, wordt nu geweigerd met compilerfouten.
  • P2186R2 ondersteuning voor garbagecollection verwijderd. Deze wijziging verwijdert declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Voorheen hadden deze functies geen effect.

Gemarkeerde prestatieverbeteringen

  • <format> detecteert nu wanneer het naar een back_insert_iterator schrijft voor een basic_string of een vector, en maakt een snellere aanroep naar insert() op het end() van de container.
  • We hebben de prestaties van std::find() en std::count() verbeterd voor vector<bool> 19x en 26x (tijden, niet procent).
  • We hebben de prestaties van std::count() voor vector<bool> verbeterd
  • std::byte heeft nu dezelfde prestaties als unsigned char in reverse() en variant::swap()

Ondersteuning voor Clang en LLVM

  • LLVM-hulpprogramma's die worden geleverd met Visual Studio, worden bijgewerkt naar LLVM 12. Zie de releaseopmerkingen van LLVMvoor meer informatie.

  • Clang-cl-ondersteuning is bijgewerkt naar LLVM 12.

  • U kunt nu fouten opsporen in processen die worden uitgevoerd op een extern systeem vanuit Visual Studio met behulp van LLDB.

C++ AMP in onbruik

  • C++ AMP-headers zijn nu afgeschaft. Door <amp.h> in een C++-project te includeren, ontstaan build-errors. Definieer _SILENCE_AMP_DEPRECATION_WARNINGSom de fouten stil te leggen. Zie onze AMP-afschaffingskoppelingenvoor meer informatie.

IntelliSense-verbeteringen

  • We hebben verbeteringen aangebracht in C++ IntelliSense bij het verstrekken van navigatie- en syntaxismarkeringen voor typen van geïmporteerde modules en headereenheden. IntelliSense is een actief investeringsgebied voor ons. Help ons te verbeteren: deel uw feedback over de ontwikkelaarscommunity met behulp van Help>Feedback verzenden.
  • We hebben de prestaties van C++ IntelliSense verbeterd door het optimaliseren van het gebruik van headers in de cache en de toegang tot symbolendatabases, waardoor de laadtijden verbeterd zijn om in uw code te komen.
  • De IntelliSense Code Linter voor C++ is nu standaard ingeschakeld en biedt directe suggesties tijdens het typen en oplossingen voor veelvoorkomende codefouten.
  • C++ IntelliSense voor CMake-projecten werkt nu wanneer u een voorinstelling met een weergavenaam gebruikt.

Updates voor C++-werkbelasting

  • Bijgewerkt naar NDK r21 LTS in de C++ Mobile Development workload.
  • De Game-ontwikkeling met C++ workload installeert nu de nieuwste Unreal Engine met ondersteuning voor Visual Studio 2022.

Verbeteringen in code-analyse

  • Codeanalyse dwingt nu af dat retourwaarden van functies met aantekeningen met _Check_return_ of _Must_inspect_result_ moeten worden gecontroleerd.
  • Detectie van null-aanwijzerdeductie is verbeterd in de hulpprogramma's voor codeanalyse.
  • Ondersteuning voor gsl::not_null is toegevoegd aan codeanalyse.
  • Ondersteuning voor Libfuzzer onder de compiler optie /fsanitize=fuzzer.

Releaseopmerkingen voor oudere versies

Releaseopmerkingen voor oudere C++-versies zijn ook beschikbaar:

Bekende problemen

C++ IntelliSense

Raadpleeg de C++ Developer Community -problemenlijst voor meer informatie over andere openstaande problemen en beschikbare tijdelijke oplossingen voor C++ in Visual Studio 2022.

Feedback en suggesties

Wij horen graag van u! U kunt een probleem melden of een functie voorstellen met behulp van het pictogram Feedback verzenden in de rechterbovenhoek van het installatieprogramma of de Visual Studio IDE, of vanuit Help>Feedback verzenden. U kunt uw problemen bijhouden met behulp van Visual Studio Developer Community, waar u opmerkingen toevoegt of oplossingen zoekt. U kunt ook gratis hulp krijgen bij de installatie via onze Live Chat-ondersteuning.

Bloggen

Profiteer van de inzichten en aanbevelingen die beschikbaar zijn op de Microsoft Developer Blogs site om op de hoogte te blijven van alle nieuwe releases. De blogs bevatten uitgebreide informatie over een breed scala aan functies. De C++-teamblog en de Visual Studio Blog zijn van bijzonder belang.