Co je nového pro C++ v Visual Studio 2022
Visual Studio 2022 přináší mnoho aktualizací a oprav prostředí Microsoft C++. Přidali jsme funkce a opravili jsme mnoho chyb a problémů v kompilátoru a nástrojích. Integrované Visual Studio také nabízí významná vylepšení výkonu a produktivity a nyní běží nativně jako 64bitová aplikace. Další informace o novinách v celé Visual Studio najdete v části Co je nového v Visual Studio 2022. Informace o novinách v dokumentech k C++ najdete v tématu Dokumentace k Jazyku Microsoft C++: Co je nového.
Co je nového pro C++ v Visual Studio verze 17.0
Souhrn nových funkcí a oprav chyb v Visual Studio najdete v tématu Co je nového v Visual Studio 2022 verze 17.0.
Rozhraní Visual Studio IDE
devenv.exeje teď nativní 64bitová aplikace.Výchozí MSVC sady nástrojů teď v záznamech ladění využívá algoritmus hash zdroje SHA-256. Dříve sada nástrojů ve výchozím nastavení používala MD5 pro hashování zdroje.
Nástroje sestavení v143 jsou teď dostupné prostřednictvím instalačního Visual Studio a v samostatných nástrojích sestavení.
Opětovné načítání za provozu pro nativní C++
- Opětovné načítání za provozu pro jazyk C++ umožňuje provádět v běžící aplikaci mnoho typů úprav kódu a používat je, aniž by bylo nutné pozastavit provádění aplikace pomocí něčeho jako zarážka.
V Visual Studio 2022 můžete při spuštění aplikace v ladicím programu použít tlačítko Opětovné načítání za provozu k úpravě aplikace, když je stále spuštěná. Toto prostředí využívá nativní funkce Upravit a pokračovat. Další informace o podporovaných úpravách najdete v tématu Edot and Continue (C++).
- Opětovné načítání za provozu podporuje projekty CMake a Open Folder.
Podpora WSL2
- Nyní můžete nativně sestavovat a ladit na WSL2 bez navazování připojení SSH. Podporují se projekty CMake pro více platforem i MSBuild linuxové projekty.
Vylepšená podpora CMake
Upgradovali jsme verzi CMake dodáovanou s Visual Studio na verzi 3.21. Další informace o tom, co je v této verzi k dispozici, najdete ve zprávě k vydání verze pro CMake 3.21.
Stránky s přehledem CMake byly aktualizovány tak, aby podporovaly
CMakePresets.json.Teď můžete konfigurovat a sestavovat projekty CMake pomocí CMake 3.21 a
CMakePresets.jsonv3.Visual Studio teď podporuje
buildPresets.targetsmožnost vCMakePresets.json. Tato možnost umožňuje vytvořit podmnožinu cílů v projektu CMake.Nabídka Project v projektech CMake byla zjednodušená a zpřístupňuje možnosti pro odstranění mezipaměti a překonfigurování a zobrazení mezipaměti.
Implementovali jsme možnost kompilátoru pro zobrazení seznamu závislostí modulu
/scanDependenciesC++20 pro projekty CMake, jak je popsáno v/scanDependencies. Jedná se o krok na cestě 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
Vylepšení standardní knihovny (STL) jsou zvýrazněná tady. Ú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, , (a jeho iterátory), , , , ( a jeho iterátor/sentinel),bind_front(),u8string,default_sentinel_tunreachable_sentinel_tranges::empty_viewranges::single_viewranges::iota_viewranges::ref_viewthreadthread::idjthread, afilesystem::path - Přidáno do skupiny funkcí v a do různých funkcí v , jako jsou členské
[[nodiscard]]stoi()<string><locale>collatehas_facet()funkce, aisalnum()rodiny atolower(). - P0980R1 Made
constexprin VS 2019 16.10. Nyní je podporován také pro jazyk Clang. - P1004R2 Made
constexprin VS 2019 16.10. Nyní je podporován také pro jazyk Clang.
Zvýrazněné funkce C++23
- P1048R1 Byla přidána nová vlastnost pro standardní knihovnu jazyka C++, která zjišťuje, zda je typ vymezený výčet.
- P1132R7,
inout_ptr() - P1679R3 Pro
basic_stringabasic_string_view - P1682R3 pro výčty
- P2162R2 Povolit dědění z
- P2166R1 Zakazuje vytváření
basic_string_viewa znullptr. Jedná se o změnu, která má narušovat zdroj. Kód, který dříve měl nedefinované chování za běhu, bude nyní odmítnut s chybami kompilátoru. - P2186R2 Byla odebrána podpora uvolňování paměti. Tím se
declare_reachableodebere , , , ,undeclare_reachabledeclare_no_pointersundeclare_no_pointersget_pointer_safety. Dříve tyto funkce nemají žádný vliv.
Zvýrazněná vylepšení výkonu
<format>teď rozpozná, kdy zapisuje do objektu pro nebo , a zrychlí volání metody na hodnotuback_insert_iteratorbasic_stringvectorinsert()end()kontejneru.- Vylepšili
std::find()jsme výkon a prostd::count()vector<bool>19x a 26x (krát, ne procenta). - Vylepšený výkon
std::count()provector<bool> std::byteteď má stejný výkon jako vunsigned chara .reverse()variant::swap()
Podpora Clang a LLVM
Nástroje LLVM dodávané s Visual Studio byly upgradovány na LLVM 12. Další informace najdete ve zprávě k vydání verze LLVM.
Podpora Clang-cl se aktualizovala na LLVM 12.
Teď můžete ladit procesy spuštěné ve vzdáleném systému z Visual Studio pomocí LLDB.
C++ AMP zastaralé
- C++ AMP záhlaví jsou teď zastaralá. Zahrnutí
<amp.h>do projektu C++ generuje chyby sestavení. Pokud chcete chyby uchovat, definujte_SILENCE_AMP_DEPRECATION_WARNINGS. Další informace najdete na našich odkazech na vyněcování AMP.
Vylepšení IntelliSense
Vylepšují jsme IntelliSense jazyka C++ při poskytování zvýraznění navigace a syntaxe pro typy z importovaných modulů a jednotek hlaviček. IntelliSense je pro nás aktivní oblastí investic. Pomozte nám s vylepšením: Podělte se o svůj názor na web Developer Community s využitím možnosti Poslatnázor.
Vylepšili jsme výkon C++ IntelliSense optimalizací využití hlaviček v mezipaměti a přístupu k databázi symbolů, která poskytuje vylepšené časy načítání pro přístup k vašemu kódu.
Linter kódu IntelliSense pro C++ je teď ve výchozím nastavení aktivní a poskytuje okamžité návrhy při psaní a opravuje návrhy na běžné chyby kódu.
Technologie IntelliSense jazyka C++ pro projekty CMake teď funguje při použití přednastavené hodnoty se zobrazovaným názvem.
Aktualizace úloh C++
Aktualizace na NDK r21 LTS v úlohu Vývoje mobilních aplikací v C++.
Úloha Vývoj her pomocí C++ teď nainstaluje nejnovější Unreal Engine s podporou pro Visual Studio 2022.
Vylepšení analýzy kódu
Analýza kódu teď vynucuje, aby byly vráceny hodnoty funkcí s poznámkami
_Check_return_nebo_Must_inspect_result_musí být zkontrolovány.Vylepšili jsme detekci přesouvání ukazatele null v našich nástroji pro analýzu kódu.
Přidání podpory pro
gsl::not_nulldo analýzy kóduPodpora libfuzzeru v možnosti
/fsanitize=fuzzerkompilátoru
Poznámky k verzi pro starší verze
K dispozici jsou také poznámky k verzi pro starší verze C++. Informace o novinek v jazyce C++ v Visual Studio 2019 najdete v tématu Co je nového pro C++ v Visual Studio 2019. Informace o novinek v jazyce C++ v Visual Studio 2017 najdete v tématu Co je nového pro C++ v Visual Studio 2017. Informace o novinek v předchozích verzích najdete v Visual C++ 2003 až 2015.
Známé problémy
C++ IntelliSense
- Při importu modulu nebo hlavičkové jednotky C++20může technologie IntelliSense přestat fungovat nebo se zobrazí chyba "Došlo k příliš mnoha chybám".
Další informace o dalších otevřených problémech a dostupných alternativních řešeních pro C++ v Visual Studio 2022 najdete v seznamu problémů s vývojáři Community C++.
Zpětná vazba a návrhy
Rádi uslyšíme váš názor! Problém můžete nahlásit nebo navrhnout funkci pomocí ikony Odeslat názor v pravém horním rohu instalačního programu nebo integrovaného vývojového prostředí Visual Studio nebo v části Nápověda odeslatnázor. Problémy můžete sledovat pomocí nástroje Visual Studio Developer Community, kde můžete přidávat komentáře nebo hledat ř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í dostupné na webu Microsoft Developer Blogy. Budou vás udržovat aktuální ve všech nových verzích. Blogy obsahují příspěvky s širokým rozsahem funkcí. Najdete zde blog týmu C++a blog Visual Studio který vás zajímá.