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.
- Další informace o novinkách ve všech sadě Visual Studio najdete v tématu Co je nového v sadě Visual Studio 2022.
- Přehled vylepšení jazyka C++ v sadě Visual Studio, VS Code a vcpkg během roku 2023 najdete v článku O roce vylepšení jazyka C++
- Informace o novinkách v dokumentaci jazyka C++ najdete v dokumentaci Microsoft C++: Co je nového.
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í.>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.
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.
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
aformattable
std::span
,range_format
format_kind
a vset_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 jakoconst
. - 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::forward
std::move_if_noexcept
, astd::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
nebostd: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:
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ářePř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: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í kenum
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
this
C++23, která je k dispozici pod možností/std:c++latest
.Přidání podpory IntelliSense pro funkce C++23, které se odvozují
this
aif 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 aLLVM
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.exe
je 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 vCMakePresets.json
souboru . 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
, afilesystem::path
- Přidáno
[[nodiscard]]
dostoi()
řady funkcí v<string>
a k různým funkcím,<locale>
jakocollate
jsou členské funkce,has_facet()
aisalnum()
rodiny.tolower()
- P0980R1 Made
std::string
constexpr
in VS 2019 16.10. Teď se podporuje pro Clang. - P1004R2 made
std::vector
constexpr
in 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 forbasic_string
abasic_string_view
to_underlying()
P1682R3 výčtů- P2162R2 Povolit dědění z
std::variant
- P2166R1 Zakázat vytváření
basic_string
abasic_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 kontejneruvector
basic_string
nebo doback_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()
provector<bool>
std::byte
nyní má stejný výkon jakounsigned char
inreverse()
avariant::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óduPodpora 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é.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro