Co je nového v jazyce C++ v sadě Visual Studio 2022

Visual Studio 2022 přináší mnoho aktualizací a oprav kompilátoru a nástrojů Microsoft C++. Integrované vývojové prostředí sady Visual Studio také nabízí významná vylepšení výkonu a produktivity a nyní běží nativně jako 64bitová aplikace.

Novinky pro C++ v sadě Visual Studio verze 17.9

Stručně řečeno, mezi nové funkce patří:

  • #include diagnostika, která poskytuje podrobnou analýzu vašich #include direktiv. Aktivujte tuto funkci tak, že kliknete pravým tlačítkem na #include direktivy #include direktivy>Zapnout diagnostiku direktiv #include. Nad jednotlivými #include kódy je počet odkazů na tento #include soubor. Kliknutím na odkaz přejděte na místo, kde váš kód používá něco z tohoto souboru záhlaví. Pokud chcete zobrazit čas sestavení direktiv#include, spusťte Přehledy sestavení tak, že přejdete na sestavení>spustit sestavení Přehledy v sestavení řešení.>

    Screenshot of #include diagnostics

    Nad znakem #include je odkaz **odkaz** a počet odkazů na tento soubor #include (v tomto případě 1). Čas sestavení je také uvedený (v tomto případě menší než 1/2 sekunda).

  • Vizualizace rozložení paměti, která ukazuje uspořádání paměti pro vaše třídy, struktury a sjednocení. Najeďte myší na typ a v rychlých informacích zvolte odkaz Rozložení paměti, aby se otevřelo vyhrazené okno zobrazující rozložení paměti vybraného typu. Když v tomto okně najedete myší na jednotlivé datové typy, zobrazí se podrobné informace o jejich velikosti a posunu v rámci tohoto typu.

    Screenshot of the memory layout window

    Okno rozložení paměti zobrazuje obsah třídy Had. Zobrazuje posuny paměti různých polí třídy, jako jsou třídy bodů pro umístění hlavy a těla, skóre atd.

  • Teď můžete zadat vlastní spustitelný soubor CMake. Tato funkce je užitečná, pokud chcete použít konkrétní verzi CMake, která není součástí sady Visual Studio. Přejděte na Možnosti nástrojů>a vyberte CMake>Obecné. Vyberte Povolit vlastní spustitelný soubor CMake a zadejte cestu k adresáři spustitelného souboru CMake.

    Screenshot of the CMake options dialog

    Dialogové okno možností CMake se zvýrazněnou možností Povolit vlastní spustitelný soubor CMake a zvýrazněným polem Spustitelný adresář CMake.

  • Vylepšená technologie IntelliSense pro projekty unreal Engine.
  • Vylepšená podpora jazyka C++23: std::format aformattablestd::span , range_formatformat_kinda v set_debug_format() rámci P2286R8 rozsahů<mdspan> formátování na P0009R18 a následných změn formulace, které byly použity na standard C++23. format() Můžete také formátovat ukazatele na P2510R3.

Souhrn aktualizací back-endu C++ najdete v tématu Aktualizace back-endu MSVC od sady Visual Studio 2022 verze 17.3.

Souhrn nových funkcí v integrovaném vývojovém prostředí sady Visual Studio 17.9 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.9.

Novinky pro C++ v sadě Visual Studio verze 17.8

Stručně řečeno, mezi nové funkce patří:

  • Strukturovaná diagnostika jazyka C++ v okně Výstup a nové okno podrobností o problému, které poskytuje další informace o chybě. Další informace naleznete v části Strukturovaný výstup SARIF a okno podrobností o problému.
  • Funkce, která umožňuje vizualizovat velikost a zarovnání tříd, struktur, sjednocení, základních typů nebo výčtů i před kompilací kódu. Najeďte myší na identifikátor a v rychlém přehledu se zobrazí informace o velikosti a zarovnání.
  • Funkce, která navrhuje, kdy označit členské funkce const , protože neupravují stav objektu. Najeďte myší na členovou funkci a kliknutím na ikonu žárovky označte funkci jako const.
  • Visual Studio vás teď vyzve k označení globálních funkcí jako statické pomocí ikony šroubováku, která se zobrazí podle názvu funkce. Kliknutím na ikonu šroubováku označte funkci jako statickou.
  • Nevyužité direktivy #include jsou v editoru neaktivní. Když najedete myší na neaktivní, můžete použít nabídku žárovky k odebrání, která zahrnuje nebo všechny nepoužité prvky. Můžete také přidat #include direktivy pro entity, které jsou nepřímo zahrnuty prostřednictvím jiných hlaviček. Další informace naleznete v tématu Vyčištění C/C++ zahrnuje v sadě Visual Studio.
  • Další podpora unreal engine:
    • Unreal Engine Test Adapter umožňuje zjišťovat, spouštět, spravovat a ladit testy unreal Engine bez opuštění integrovaného vývojového prostředí sady Visual Studio.
    • Pomocí fragmentů kódu unreal engine můžete v seznamu členů najít běžné konstruktory Unreal Engine jako fragmenty kódu.
    • Build Přehledy je teď integrovaný se sadou Visual Studio 2022 a pracuje s projekty MSBuild a CMake pomocí MSVC. Teď můžete zobrazit další informace o kompilaci funkce, například jak dlouho trvalo kompilaci, a počet ForceInlines.
  • Podpora vzdáleného linuxového testu jednotek teď umožňuje spouštět testy CTest a GTest na vzdálených počítačích s Linuxem z Průzkumníka testů sady Visual Studio stejně jako místní testy.

Komplexní souhrn nových funkcí C++ v sadě Visual Studio 17.8 najdete v tématu Co je nového pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.8.

Souhrn nových funkcí v integrovaném vývojovém prostředí sady Visual Studio 17.8 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.8.

Novinky pro C++ v sadě Visual Studio verze 17.7

Souhrn nových funkcí C++ v sadě Visual Studio 17.7 najdete v tématu Co je nového pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.7.

Stručně řečeno, mezi nové funkce patří:

  • Rychlejší ladicí relace a rychlejší časy načítání projektu
  • Podrobná vizualizace rozšíření maker
  • Stažení jedním kliknutím pro Subsystém Windows pro Linux (WSL)
  • Vylepšená podpora komentářů k Doxygenu
  • Přehledy sestavení C++ pro vývoj her
  • Přidáno /std:clatest pro kompilátor jazyka C.
  • Vylepšení projektu unreal Engine, jako je rychlejší IntelliSense a barevné zvýrazňování syntaxe, možnost najít všechny odkazy podrobného plánu Unreal Engine a další.

Souhrn nových funkcí jazyka C++, které jsou specifické pro vývoj her, najdete v tématu Uvolnění výkonu sady Visual Studio 2022 for C++ Game Development

Souhrn nových funkcí v integrovaném vývojovém prostředí sady Visual Studio 17.7 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.7.

Novinky pro C++ v sadě Visual Studio verze 17.6

Souhrn nových funkcí C++ v sadě Visual Studio 17.6 najdete v tématu Co je nového pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.6.

Stručně řečeno, některé z nových funkcí jsou: ladění skriptů CMake, integrovaná podpora jazyka HLSL (High Level Shading Language), prohlížeč protokolu unreal engine, počáteční podpora pro projekty C++20 v projektech C++/CLI, VCPKG je teď ve výchozím nastavení přidána a některé standardní funkce knihovny C++23 pro rozsahy. Úplný seznam nových funkcí přidaných do standardní knihovny najdete v protokolu změn STL.

Souhrn nových funkcí v integrovaném vývojovém prostředí sady Visual Studio 17.6 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.6.

Novinky pro C++ v sadě Visual Studio verze 17.5

Souhrn nových funkcí C++ v sadě Visual Studio ve verzi 17.5 najdete v tématu Co je nového pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.5. Souhrn nových funkcí a oprav chyb v integrovaném vývojovém prostředí sady Visual Studio verze 17.5 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.5.

  • std::move, std::forwardstd::move_if_noexcept, a std::forward_like nyní nevytvářet volání funkce ve vygenerovaném kódu, ani v režimu ladění. Tato změna zabraňuje pojmenovaným přetypováním, což v buildech ladění způsobuje zbytečné režijní náklady. /permissive- (nebo možnost, která to znamená, například /std:c++20 nebo std:c++latest) je povinná.

  • Přidáno [[msvc::intrinsic]] pro podporu výše uvedené položky. Tento atribut můžete použít u nerekurzivních funkcí, které se skládají z jednoho přetypování, které přebírají pouze jeden parametr.

  • Přidali jsme podporu konzoly Linuxu v integrovaném terminálu, která umožňuje vstupně-výstupní operace terminálu.

  • Přidání počáteční experimentální podpory pro atomické primitivy C11 (<stdatomic.h>). Tuto experimentální funkci můžete povolit pomocí /experimental:c11atomics možnosti v /std:c11 režimu nebo novějším.

  • Přidání nové sady experimentálních kontrol s vysokou spolehlivostí do kontroly životnosti pro snížení šumu

  • Nová funkce Preview, Vzdálená Průzkumník souborů, umožňuje zobrazit adresář souborů na vzdálených počítačích ve VS a nahrávat a stahovat do něj soubory.

  • Změna správy verzí spustitelných souborů CMake dodávaná se sadou Visual Studio tak, aby odpovídala verzím Kitware.

  • Přidání podpory pro Opětovné načítání za provozu do šablony projektu CMake

  • Přechod na definici jazyka C++ teď používá podrobnější indikátor operace, který trvá déle, a nahrazuje modální dialog z předchozích verzí.

  • Zahájení zavádění experimentu poskytujícího více inteligentních výsledků v seznamu automatického dokončování a člena jazyka C++. Tato funkce se dříve označovala jako Prediktivní technologie IntelliSense, ale nyní používá novou metodu prezentace.

  • Nyní dodáváme nativní sadu nástrojů Clang Arm64 s naší úlohou LLVM, která umožňuje nativní kompilaci na počítačích Arm64.

  • Přidání lokalizace do rozšíření Image Watch (Toto rozšíření je k dispozici na Marketplace a není součástí Instalační program pro Visual Studio).

  • Přidali jsme podporu pro otevření okna terminálu do aktuálně spuštěného vývojového kontejneru.

  • Provedli jsme několik vylepšení rozšíření maker IntelliSense. Zejména jsme povolili rekurzivní rozšíření v dalších kontextech a do automaticky otevíraných oken jsme přidali možnosti pro zkopírování rozšíření do schránky nebo rozbalení makra vložené.

  • Souběžné monitorování je nyní podporováno v sériovém monitoru. Souběžné monitorování umožňuje současně monitorovat více portů současně. Stisknutím tlačítka plus otevřete další sériový monitor a začněte.

  • Nyní můžete zobrazit vlastnosti ze základních tříd upravených v prostředku unreal Blueprint bez opuštění sady Visual Studio. Poklikáním v referenčních informacích k podrobnému plánu pro třídu nebo vlastnost jazyka C++ otevřete Kontrolu prostředků UE v sadě Visual Studio.

  • Povoleno spouštění DevContainers na vzdáleném počítači s Linuxem.

  • Povolení výběru více cílů pro sestavení v zobrazení cílů CMake

  • Byla přidána podpora pro CMakePresets.json verze 5. Informace o nových funkcích najdete v dokumentaci k CMake.

  • Průzkumník testů povolil paralelní sestavování a testování více cílů CMake.

  • Přidání možnosti Otevřít kontejner v terminálu do Dev Containers

  • Implementovali jsme standardní funkce knihovny:

    • basic_format_stringP2508R1, format_string,wformat_string
    • ranges::fold_leftP2322R6, ranges::fold_righta tak dále.
    • views::zip P2321R2 (nezahrnuje zip_transform, adjacentaadjacent_transform)

Novinky pro C++ v sadě Visual Studio verze 17.4

Souhrn nových funkcí a oprav chyb v sadě Visual Studio ve verzi 17.4 najdete v sadě Visual Studio 2022 verze 17.4 a novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.4.

  • Vylepšené chybové zprávy kompilátoru, které poskytují přesnější a užitečnější informace, zejména pro koncepty.

  • Přidání experimentální možnosti /experimental:log<directory> MSVC pro výstup strukturované diagnostiky SARIF do zadaného adresáře

  • Přidání podpory atributů C23 do IntelliSense a pokračování v podpoře modulů C++20

  • Vylepšili jsme výkon indexování při otevírání nového řešení. Velké projekty můžou vidět 20–35% zlepšení z 17,3.

  • Vylepšená optimalizace pojmenovaných návratových hodnot (NRVO):

    • NrVO je povolen pro případy, které zahrnují zpracování výjimek nebo smyčky.
    • NRVO je povolena i v /Od případě, že uživatel předá /Zc:nrvo možnost nebo /std:c++20 později nebo /permissive-.
    • Pomocí této /Zc:nrvo- možnosti teď můžete NRVO zakázat.
  • Upgradovali jsme verzi LLVM dodávaná se sadou Visual Studio na verzi 15.0.1. Další informace o tom, co je k dispozici, najdete v poznámkách k verzi LLVM a Clang .

  • Přidání podpory do sady Visual Studio pro artefakty vcpkg s projekty CMake U projektů, které obsahují manifest vcpkg, se prostředí automaticky aktivuje při otevření projektu. Přečtěte si další informace o této funkci v aktivaci prostředí vcpkg v blogovém příspěvku sady Visual Studio .

  • Teď můžete používat Dev Containers pro své projekty C++. Další informace o této funkci najdete v blogovém příspěvku dev Containers for C++ .

  • Technologie IntelliSense teď respektuje pořadí předem odlehlých hlaviček, když je jedním z nich PCH. Dříve, když byl PCH použit prostřednictvím a vynuceně zahrnutý prostřednictvím /Yu/FI, IntelliSense by vždy zpracovával jako první před všemi ostatními hlavičkami zahrnutými prostřednictvím /FI. Toto chování neodpovídá chování sestavení. Při této změně /FI se hlavičky zpracovávají v pořadí, v jakém jsou zadané.

  • Odebrání interních předpon z názvů CTest v Průzkumníku testů

  • Aktualizace verze CMake dodávaná se sadou Visual Studio na verzi 3.24.1 Podrobnosti o tom, co je k dispozici, najdete v poznámkách k verzi CMake.

  • Aktualizace sady Android SDK:

    • Skripty Ant byly odebrány, takže uživatelé už v dialogovém okně Nový projekt nevidí šablony založené na Antu. Nápovědu k migraci ze šablon Ant na šablony Gradle najdete v tématu Migrace sestavení z Apache Antu.
    • Přidání podpory pro sestavování s NDK 23 a 24
    • Aktualizace komponenty NDK na LTS verze 23
  • Přidání vektorizovaných implementací , ranges::min_element()ranges::max_element()aranges::minmax_element()

  • Pokračujeme ve sledování nejnovějšího vývoje standardizace jazyka C++. Podpora těchto funkcí C++23 je dostupná zahrnutím do /std:c++latest možností kompilátoru:

    • ranges::containsP2302R4,ranges::contains_subrange

    • string_view P2499R0 konstruktor rozsahu by měl býtexplicit

    • auto(x)P0849R8: rozkládající se kopie v jazyce

      (Část kompilátoru ještě není implementovaná. Část knihovny byla implementována v režimu C++20, když byla původně implementována podpora rozsahů.)

    • P0881R7<stacktrace>

    • P2301R1 přidání aliasu pmr prostd::stacktrace

    • P1328R1constexpr type_info::operator==()

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

    • P2441R2views::join_with

  • Přidali jsme možnost Navigace po vytvoření deklarace nebo definice, která vám umožní zvolit navigační chování funkce Vytvořit deklaraci nebo definici. Můžete si vybrat mezi náhledem (výchozí) nebo otevřením dokumentu nebo bez navigace.

  • Buildy Arm64 sady Visual Studio teď sbalují verze Arm64 CMake a Ninja.

  • Byla přidána podpora předvoleb CMake verze 4. Podrobnosti o tom, co je k dispozici, najdete v poznámkách k verzi CMake.

  • Vzdálená systémová připojení pomocí správce Připojení ion teď podporují SSH ProxyJump. ProxyJump se používá pro přístup k hostiteli SSH prostřednictvím jiného hostitele SSH (například pro přístup k hostiteli za bránou firewall).

Novinky pro C++ v sadě Visual Studio verze 17.3

Souhrn nových funkcí a oprav chyb v sadě Visual Studio ve verzi 17.3 najdete v článku zpráva k vydání verze pro Visual Studio 2022 verze 17.3 a vylepšení jazyka C++.

  • Sada nástrojů Arm64EC už není označená jako experimentální a je připravená k použití v produkčním prostředí.

  • Terminál sady Visual Studio se teď dá použít jako klient SSH s uloženými připojeními SSH. S nainstalovanými nástroji C++ pro Linux otevřete okno Nástroje terminálu. Rozevírací seznam Terminálu se naplní uloženými připojeními. Když vyberete připojení, otevře se v sadě Visual Studio nové okno terminálu, ve které se ve vzdáleném systému zobrazí pseudo terminal. Podporují se všechny řídicí znaky, barvy a rozpoznávání pozice kurzoru.

  • Visual Studio teď může přidat šablony tříd Unreal Engine pro projekty UE. Pokud chcete tuto funkci vyzkoušet, ujistěte se, že je v Instalační program pro Visual Studio vybraná podpora integrovaného vývojového prostředí (IDE) pro unreal Engine ve vývoji her s úlohou C++. Když pracujete na projektu UE, klikněte pravým tlačítkem myši na projekt nebo složku nebo filtr a vyberte Přidat>třídu UE.

  • Přechod na definici si teď pamatuje předchozí podpis a naviguje odpovídajícím způsobem, pokud není k dispozici lepší shoda (například po ruční změně podpisu některého z párů). Rychlost odezvy funkce Přejít na vše je vylepšená. Dříve se výsledky zobrazily po ukončení psaní. V novém prostředí se výsledky zobrazí při psaní.

  • V kontextech vyžadujících enum dokončení typu (například přiřazení k enum proměnným, popisky písmen, návratový enum typ atd.) se seznam automatického dokončování teď filtruje jenom na odpovídající enumerátory a související konstruktory.

  • Přidání podpory PackageReference NuGet pro projekty C++/CLI MSBuild, které cílí na .NET Core Tato změna byla provedena tak, aby odblokovala smíšené základy kódu, aby bylo možné přijmout .NET Core. Tato podpora nefunguje pro jiné typy projektů C++ ani pro žádné typy projektů C++, které cílí na rozhraní .NET Framework. Neexistují žádné plány rozšíření podpory PackageReference na jiné scénáře C++. Tým pracuje na samostatných zkušenostech zahrnujících vcpkg pro scénáře bez MSBuildu a přidává větší funkce.

  • Přidání okna sériového monitorování pro vložený vývoj, který je k dispozici prostřednictvím ladění>sériového monitoru systému Windows.>

  • Vylepšili jsme indexování C++ o ~66 % oproti 17,2.

  • Aktualizace verze CMake dodávaná se sadou Visual Studio na verzi 3.23 Podrobnosti o tom, co je k dispozici, najdete v poznámkách k verzi CMake 3.23.

  • Upgradovali jsme verze nástrojů LLVM dodávané se sadou Visual Studio na verzi 14. Podrobnosti o tom, co je k dispozici, najdete v poznámkách k verzi LLVM a Clang .

  • Aktualizace sady nástrojů C++ pro vývoj 16.11 vedle sebe na verzi 14.29.30145.00. Nejnovější verze sady nástrojů Pro vývoj 16.11 C++ obsahuje důležité opravy chyb, včetně opravy všech zbývajících sestav chyb C++20. Další informace o opravách chyb, včetně sestav chyb C++20 ve verzi Dev 16.11, najdete ve zprávě k vydání verze pro Visual Studio 2019 verze 16.11.14.

  • Provedli jsme různá vylepšení prostředí editoru modulů C++. Neustále pracujeme na zlepšení kvality prostředí, ale doporučujeme vám je vyzkoušet ve verzi 17.3. Nahlášení zbývajících problémů prostřednictvím komunity vývojářů

Novinky pro C++ v sadě Visual Studio verze 17.2

Souhrn nových funkcí a oprav chyb v sadě Visual Studio ve verzi 17.2 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.1.

  • Byla přidána podpora kompilátoru pro odstranění duplicitních funkcí jazyka thisC++23, která je k dispozici pod možností /std:c++latest .

  • Přidání podpory IntelliSense pro funkce C++23, které se odvozují this a if consteval.

  • Přidali jsme podporu názvu vloženého parametru a nápovědy pro psaní, přepínací klávesou Alt+F1 nebo poklepáním na ctrl. Toto chování lze přizpůsobit v části Nástroje > Možnosti > textové editory > C/C++ > IntelliSense.

  • Přidání experimentální podpory modulů C++20 v projektech CMake Tato podpora je aktuálně dostupná pouze s generátorem sady Visual Studio (MSBuild).

  • Ve verzi 17.1 jsme zavedli periferní registr a zobrazení RTOS pro vložené vývojáře. Dál vylepšujeme možnosti těchto zobrazení s vylepšeními použitelnosti ve verzi 17.2:

    • Ve výchozím nastavení je okno nástroje RTOS skryté. Zabrání zobrazení okna nástroje s chybovými zprávami, které nejsou relevantní, když nepoužíváte RTOS.
    • Když poklikáte na objekt RTOS v okně nástroje, přidá kukátko objektu.
    • Když v okně nástroje RTOS vyberete počáteční a koncové hodnoty ukazatele zásobníku, otevře se v okně paměti.
    • Přidání povědomí o vláknech pro cíle zařízení do okna zásobníku volání
    • Uživatelé teď můžou vybrat ikonu špendlíku vedle periferních zařízení, registrů nebo polí, aby je připnuli na začátek zobrazení Periferní zařízení.
  • Přidání implementací zbývajících sestav chyb C++20 (označovaných také jako backporty) Všechny funkce C++20 jsou teď dostupné v rámci /std:c++20 této možnosti. Další informace o implementovaných backportech najdete v projektu C++20 Defect Reports v úložišti Microsoft/STL GitHub a blogovém příspěvku MSVC STL Completes /std:c++20 .

  • Do možnosti jsme přidali různé funkce knihovny C++23, které jsou k dispozici /std:c++latest . Další informace o nových funkcích najdete v protokolu změn úložiště STL.

  • Vylepšený výkon počátečního indexování jazyka C++ o až 20 % v závislosti na hloubkě zahrnutého grafu.

Novinky pro C++ v sadě Visual Studio verze 17.1

Souhrn nových funkcí a oprav chyb v sadě Visual Studio ve verzi 17.1 najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.1.

  • Přidá se nová šablona Konfigurace přednastavení pro konfiguraci a sestavení projektů CMake ve vzdáleném systému macOS pomocí CMakePresets.json. Cíle CMake můžete také spustit ve vzdáleném systému macOS a pak vzdáleně ladit v ladicím programu sady Visual Studio, který podporuje GDB nebo LLDB.
  • Teď můžete ladit výpisy paměti jádra ve vzdáleném systému macOS ze sady Visual Studio s LLDB nebo GDB.
  • Verze Clang sady Visual Studio a LLVM dodávány se upgradují na verzi 13.
  • Integrace CMake sady Visual Studio je aktivní pouze v okamžiku, kdy CMakeLists.txt je identifikován v kořenovém adresáři otevřeného pracovního prostoru. Pokud se zjistí CMakeLists.txt na jiné úrovni pracovního prostoru, zobrazí se výzva k aktivaci integrace CMake sady Visual Studio s oznámením.
  • Nová zobrazení, která umožňují kontrolovat a pracovat s periferními registry na mikrořadicích a objektech operačních systémů v reálném čase (RTOS), které jsou k dispozici prostřednictvím ladění>registrů windows Embedded>
  • Přidali jsme nové zobrazení vláken pro projekty RTOS, které je dostupné prostřednictvím ladění>objektů Windows>RTOS. Další informace naleznete v tématu Vývoj vloženého softwaru v sadě Visual Studio.

Novinky pro C++ v sadě Visual Studio verze 17.0

Souhrn nových funkcí a oprav chyb v sadě Visual Studio najdete ve zprávě k vydání verze pro Visual Studio 2022 verze 17.0.

  • Integrované vývojové prostředí sady Visual Studio devenv.exeje nyní nativní 64bitovou aplikací.

  • Sada nástrojů MSVC teď ve výchozím nastavení v záznamech ladění nastaví hodnotu hash zdroje SHA-256. Sada nástrojů dříve používala MD5 pro vytváření zdrojových hodnot hash ve výchozím nastavení.

  • Nástroje sestavení v143 jsou nyní dostupné prostřednictvím instalačního programu sady Visual Studio a v samostatných nástrojích sestavení.

Opětovné načítání za provozu pro nativní jazyk C++

  • Opětovné načítání za provozu pro C++ umožňuje provádět mnoho typů úprav kódu ve spuštěné aplikaci a používat je, aniž by bylo nutné pozastavit provádění aplikace pomocí něčeho jako zarážky.

Když v sadě Visual Studio 2022 spustíte aplikaci v ladicím programu, můžete pomocí tlačítka Opětovné načítání za provozu upravit aplikaci, i když je stále spuštěná. Toto prostředí využívá nativní funkce Upravit a Pokračovat. Další informace o podporovanýchúpravch

  • Opětovné načítání za provozu podporuje projekty CMake a Open Folder.

Podpora WSL2

  • Nyní můžete nativně sestavovat a ladit ve WSL2 bez navázání připojení SSH. Podporují se projekty CMake pro různé platformy i linuxové projekty založené na MSBuildu.

Vylepšená podpora CMake

  • Upgradovala verzi CMake dodávaná se sadou Visual Studio na verzi 3.21. Další informace o tom, co je k dispozici v této verzi, najdete v poznámkách k verzi CMake 3.21.

  • Stránky přehledu CMake se aktualizují, aby podporovaly CMakePresets.json.

  • Teď můžete nakonfigurovat a sestavit projekty CMake pomocí CMake 3.21 a CMakePresets.json v3.

  • Visual Studio teď podporuje buildPresets.targets možnost v CMakePresets.jsonsouboru . Tato možnost umožňuje vytvořit podmnožinu cílů v projektu CMake.

  • Nabídka Projekt v projektech CMake je zjednodušená a zpřístupňuje možnosti pro odstranění mezipaměti a změna konfigurace a zobrazení mezipaměti.

  • Implementovali jsme možnost kompilátoru /scanDependencies pro výpis závislostí modulů C++20 pro projekty CMake, jak je popsáno v P1689R5. Je to krok směrem k podpoře vytváření projektů založených na modulech pomocí CMake a pracujeme na dokončení této podpory v pozdějších verzích.

Vylepšení standardní knihovny

Tady jsou zvýrazněná vylepšení STL (Standard Library). Úplný seznam nových funkcí, změn, oprav chyb a vylepšení výkonu najdete v protokolu změn týmu STL.

  • Přidání vizualizérů ladění pro zlepšení způsobu zobrazení následujících typů: source_location, bind_front(), u8string (a jeho iterátory), default_sentinel_t, , unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (a jeho iterátor/sentinel), ranges::ref_view, thread, thread::id, jthread, a filesystem::path
  • Přidáno [[nodiscard]] do stoi() řady funkcí v <string> a k různým funkcím, <locale> jako collate jsou členské funkce, has_facet()a isalnum() rodiny.tolower()
  • P0980R1 Made std::stringconstexpr in VS 2019 16.10. Teď se podporuje pro Clang.
  • P1004R2 made std::vectorconstexprin VS 2019 16.10. Teď se podporuje pro Clang.

Zvýrazněné funkce C++23

  • P1048R1 Přidání is_scoped_enum– nová vlastnost pro standardní knihovnu jazyka C++, která zjistí, jestli je typ vymezený výčtem.
  • out_ptr()P1132R7,inout_ptr()
  • contains() P1679R3 for basic_string abasic_string_view
  • to_underlying() P1682R3 výčtů
  • P2162R2 Povolit dědění zstd::variant
  • P2166R1 Zakázat vytvářeníbasic_string a basic_string_view od .nullptr Tato změna představuje změnu způsobující chybu zdroje. Kód, který dříve měl nedefinované chování za běhu, je nyní odmítnut s chybami kompilátoru.
  • P2186R2 odebrání podpory uvolňování paměti. Tato změna odebere declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, . get_pointer_safety. Dříve tyto funkce neměly žádný vliv.

Zvýrazněná vylepšení výkonu

  • <format>Teď zjistí, kdy je zápis do kontejneru vectorbasic_string nebo do back_insert_iterator něj zapisuje, a provede rychlejší volání insert()end() na kontejner.
  • Vylepšili jsme výkon std::find()std::count()vector<bool> 19x a 26x (krát, ne procenta).
  • Vylepšili jsme výkon std::count() pro vector<bool>
  • std::byte nyní má stejný výkon jako unsigned char in reverse() a variant::swap()

Podpora Clang a LLVM

  • Nástroje LLVM dodávané se sadou Visual Studio se upgradují na LLVM 12. Další informace najdete v poznámkách k verzi llVM.

  • Podpora Clang-cl byla aktualizována na LLVM 12.

  • Teď můžete ladit procesy spuštěné ve vzdáleném systému ze sady Visual Studio pomocí LLDB.

Zastaralé C++ AMP

  • Záhlaví C++ AMP jsou teď zastaralá. Zahrnutí <amp.h> do projektu C++ generuje chyby sestavení. Chcete-li umlčet chyby, definujte _SILENCE_AMP_DEPRECATION_WARNINGS. Další informace najdete na našich odkazech pro vyřazení AMP.

Vylepšení IntelliSense

  • Vylepšili jsme technologii IntelliSense jazyka C++ při poskytování navigace a zvýrazňování syntaxe pro typy z importovaných modulů a jednotek hlaviček. IntelliSense je pro nás aktivní oblastí investic. Pomozte nám vylepšovat: Sdílejte svůj názor na komunitu vývojářů pomocí funkce Poslat názor.>

  • Vylepšili jsme výkon technologie IntelliSense jazyka C++ optimalizací přístupu k databázi hlaviček v mezipaměti a získáním lepší doby načítání pro přístup k kódu.

  • Technologie IntelliSense Code Linter pro C++ je teď ve výchozím nastavení zapnutá a poskytuje okamžité návrhy při psaní a opravuje návrhy běžných vad kódu.

  • Technologie IntelliSense jazyka C++ pro projekty CMake teď funguje při použití přednastaveného zobrazovaného názvu.

Aktualizace úloh C++

  • Aktualizace na NDK r21 LTS v úloze vývoje mobilních aplikací C++.

  • Vývoj her s úlohou C++ teď nainstaluje nejnovější Unreal Engine s podporou sady Visual Studio 2022.

Vylepšení analýzy kódu

  • Analýza kódu teď vynucuje, aby se vracely hodnoty funkcí anotovaných _Check_return_ nebo _Must_inspect_result_ se musí kontrolovat.

  • Detekce dereference ukazatele null je vylepšená v našich nástrojích pro analýzu kódu.

  • Přidání podpory pro gsl::not_null analýzu kódu

  • Podpora pro Libfuzzer v rámci možnosti kompilátoru /fsanitize=fuzzer .

Poznámky k verzi pro starší verze

K dispozici jsou také poznámky k verzi pro starší verze C++. Informace o novinkách jazyka C++ v sadě Visual Studio 2019 najdete v tématu Co je nového pro C++ v sadě Visual Studio 2019. Informace o novinkách jazyka C++ v sadě Visual Studio 2017 najdete v tématu Co je nového pro C++ v sadě Visual Studio 2017. Informace o novinkách v dřívějších verzích najdete v tématu Visual C++ What's New 2003 až 2015.

Známé problémy

C++ IntelliSense

Další informace o dalších otevřených problémech a dostupných řešeních pro jazyk C++ v sadě Visual Studio 2022 najdete v seznamu problémů komunity vývojářů jazyka C++.

Názory a návrhy

Rádi se dozvíme váš názor! Problém můžete nahlásit nebo navrhnout funkci pomocí ikony Odeslat zpětnou vazbu v pravém horním rohu instalačního programu nebo integrovaného vývojového prostředí sady Visual Studio nebo z nápovědy>k odeslání názoru. Problémy můžete sledovat pomocí komunity vývojářů sady Visual Studio, kde přidáváte komentáře nebo hledáte řešení. Naše podpora na živém chatu vám navíc poskytne bezplatnou pomoc s instalací.

Blogy

Využijte přehledy a doporučení, která jsou k dispozici na webu Blogy pro vývojáře Microsoftu , abyste zůstali v aktualizovaném stavu ve všech nových verzích. Blogy obsahují podrobné příspěvky o široké škále funkcí. Blog týmu C++ a blog sady Visual Studio jsou zvláště zajímavé.