Sdílet prostřednictvím


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.

Co je nového pro C++ v sadě Visual Studio verze 17.11

Vydáno v srpnu 2024

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.11
Standardní knihovna (STL) sloučila funkce C++26 a C++23, sestavy chyb C++20, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.11
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.11 Zpráva k vydání verze pro Visual Studio 2022 verze 17.11
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.11 Vylepšení shody c++, změny chování a opravy chyb v sadě Visual Studio 2022 17.11

Částečný seznam nových funkcí:

  • Vylepšení standardní knihovny:

    • Formátovaná implementace výstupu nyní obsahuje std::range_formatter a formátovací nástroje pro std::pair a std::tuple.
    • Byla přidána podpora pro std::println() bez argumentů. Vytiskne se prázdný řádek podle návrhu v P3142R0.
    • Vylepšená vektorizace pro několik algoritmů včetně replace_copy(), , replace_copy_if()ranges::replace_copy, ranges::replace_copy_if, find_first_of() a ranges::find_first_of, pro 8bitové a 16bitové prvky, mismatch(), , , ranges::countranges::mismatchfind()ranges::findcount() ranges::find_lasta .ranges::iota
  • Vývoj her v jazyce C++

    • V sadě Visual Studio teď můžete přidat běžné šablony, moduly a moduly plug-in třídy Unreal Engine. Další informace najdete v tématu Přidání tříd, modulů a modulů modulu unreal engine v sadě Visual Studio.
    • Nový panel nástrojů Unreal Engine poskytuje rychlý přístup k akcím souvisejícím s Unreal Engine ze sady Visual Studio. Panel nástrojů umožňuje rychlé připojení k procesům unreal Engine, opětovné prohledání mezipaměti podrobných plánů, rychlý přístup k protokolu unreal Engine a poskytuje rychlý přístup ke stránce konfigurace unreal engine pro Visual Studio. Další informace naleznete v tématu Unreal Engine Toolbar.
    • Výsledky trasování teď můžete filtrovat podle projektu. Výsledkem je také, že každý řádek zobrazuje relativní cestu a název souboru místo celé cesty. Vylepšili jsme také seskupení výsledků v zobrazení Zahrnuté soubory :

    Snímek obrazovky s vylepšenými výsledky diagnostiky zahrnutých souborů

    Zobrazení Zahrnuté soubory má pro projekt nový sloupec. Vybere se sloupec Projekt a vybere se například (Vybrat vše), CompilerIdC, OpenAL, common atd. Zahrnuté soubory jsou uvedeny podle relativní cesty a názvu souboru a seskupené dohromady.

  • Ladění CMake

    • Teď můžete ladit skripty a CMakeLists.txt soubory CMake v ladicím programu sady Visual Studio pro projekty CMake, které cílí na Linux prostřednictvím Subsystém Windows pro Linux (WSL) nebo SSH. Pokud chcete spustit ladicí relaci CMake v sadě Visual Studio, nastavte v CMakeLists.txt souboru zarážku a pak přejděte na Project>Configure Cache s laděním CMake.
  • Funkce Copilot

    • Když v editoru kódu najedete myší na symboly, klikněte v dialogovém okně Rychlé informace na tlačítko Copilot Řekněte mi další informace, abyste se dozvěděli více o daném symbolu:

    Snímek obrazovky s oknem Rychlé informace

    Okno Rychlé informace je zobrazeno nad funkcí. Zvýrazněný odkaz Řekněte mi další.

    • GitHub Copilot může generovat návrhy pojmenování pro vaše identifikátory (proměnné, metody nebo třídy) na základě způsobu použití identifikátoru a stylu kódu.

      Snímek obrazovky s dialogovým oknem GitHub Copilot Rename

      Dialogové okno Přejmenovat obsahuje pole Nový název s rozevíracím seznamem, který zobrazuje tyto možnosti: text_color, font_color, display_color, console_color a menu_text_color.

    Potřebujete aktivní předplatné GitHub Copilot. Klikněte pravým tlačítkem myši na proměnnou, kterou chcete přejmenovat, a zvolte Přejmenovat (Ctrl+R, Ctrl+R). Výběrem ikony GitHub Copilot sparkle vygenerujte návrhy pojmenování.

  • Ladění

    • Podmíněné zarážky v jazyce C++ jsou výrazně rychlejší.
  • Vylepšení diagnostiky

    • Vylepšená diagnostika při volání std::get<T> na std::tuple více instancí v argumentech T šablony. MSVC sloužící k hlášení:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Teď sestavuje:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Vylepšená diagnostika, pokud std::ranges::to nelze vytvořit požadovaný výsledek. MSVC sloužící k hlášení:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Teď sestavuje:
      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)'

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

Vydáno v květnu 2024

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.10
Standardní knihovna (STL) sloučila funkce C++26 a C++23, sestavy chyb C++20, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.10
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.10 Zpráva k vydání verze pro Visual Studio 2022 verze 17.10
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.10 Vylepšení shody c++, změny chování a opravy chyb v sadě Visual Studio 2022 17.10

Částečný seznam nových funkcí:

  • Aktualizace sady nástrojů MSVC: Verze sady nástrojů MSVC se aktualizuje z verze 19.39 na 19.40. To může mít vliv na projekty, u kterých se předpokládá verze. Další informace o některých způsobech, jak to ovlivní projekty, které předpokládají, že verze MSVC jsou všechny verze 19.3X pro Visual Studio 2022, naleznete v tématu MSVC Toolset Podverze číslo 14.40 VS 2022 v17.10.
  • Vylepšení standardní knihovny: Standardní knihovna přidala podporu pro P2510R3 Ukazatele formátování, která přináší sadu specifikátorů formátu pro ukazatele při použití std::format více v souladu s těmi, které již existují pro celá čísla. Vylepšili jsme vektorizované implementace std::min_element, std::ranges::mina přátel.
  • Build Insights: Teď poskytuje informace o vytváření instancí šablony. Viz Zobrazení šablon pro Build Insights v sadě Visual Studio nebo čistě virtuální C++ – zobrazení šablon pro sestavení insights v záznamu sady Visual Studio .
  • Modul plug-in Unreal Engine: Existuje nová funkce výslovného souhlasu, která umožňuje spuštění modulu plug-in Unreal Engine na pozadí, což snižuje náklady na spuštění. Jedná se o funkci výslovného souhlasu, která se aktivuje prostřednictvím modulu Možnosti>nástrojů>Unreal Engine.
  • Nové funkce pro Linux: Podívejte se na nové funkce vývoje pro Linux v sadě Visual Studio.
  • Cíle CMake: Cíle CMake teď můžete připnout v zobrazení cílů CMake.
  • Správce připojení uživatelské prostředí: Uživatelské prostředí poskytuje plynulejší prostředí při připojování ke vzdáleným systémům. Další informace naleznete v tématu Vylepšení použitelnosti v sadě Visual Studio Správce připojení.
  • Komentáře k žádostem o přijetí změn: Teď můžete zobrazit komentáře GitHubu a Azure DevOps přímo v pracovním souboru. Povolte příznak funkce, komentáře k žádostem o přijetí změn v >možnostech funkcí preview prostředí>a pro začátek si projděte větev žádosti o přijetí změn.
  • Vygenerovaný obsah AI: GitHub Copilot teď může vytvářet popisy žádostí o přijetí změn. Vyžaduje aktivní předplatné GitHub Copilot. Vyzkoušejte si to kliknutím na ikonu pera Pro vytvoření žádosti o přijetí změn v okně Vytvořit žádost o přijetí změn.
  • Náhled obrázku: Najeďte myší na cestu k obrázku a zobrazte náhled s podrobnostmi o velikosti. Velikost je omezena na šířku 500 pixelů a vysokou.

    Snímek obrazovky s náhledem přechodu myší

    Myš najede myší na řádek std::filesystem::p ath vs_logo_path = ".. /images/vs_logo.png". Pod ním se zobrazí náhled loga sady Visual Studio a informace o velikosti 251 × 500 pixelů a velikosti 13,65 kB.

  • Vytvoření zarážky nebo tracepointu: Teď můžete vytvářet podmíněné zarážky nebo tracepointy přímo z výrazů ve zdrojovém kódu z nabídky po kliknutí pravým tlačítkem myši. Funguje to u názvů vlastností nebo polí a hodnot z automatických hodnot, místních hodnot, oken kukátků nebo datových popisů.
  • Dialogové okno Připojit k procesu: Funkce poskytované dialogem Připojit k procesu je uživatelsky přívětivější. Teď můžete snadno přepínat mezi stromovými a seznamovými zobrazeními, lépe uspořádat procesy pomocí sbalitelných oddílů a vybrat typy kódu se zjednodušeným polem se seznamem. Funkce "Vybrat/sledovat okno" je teď jednodušší a umožňuje obousměrné sledování: výběr procesu zvýrazní jeho okno a kliknutím na okno vyberete jeho proces.
  • Integrace GitHub Copilotu: Rozšíření GitHub Copilot a Copilot Chat jsou teď sjednocená a nyní se dodávají přímo v sadě Visual Studio. Pokud ji chcete nainstalovat, nainstalujte do Instalační program pro Visual Studio komponentu GitHub Copilot:

    Snímek obrazovky s možností instalace Instalační program pro Visual Studio GitHub Copilotu

    Rozhraní GitHub Copilot je v pravém horním rohu sady Visual Studio. Pokud ho chcete použít, potřebujete aktivní předplatné GitHub Copilot.

    Snímek obrazovky s tlačítkem GitHub Copilot

    Tlačítko GitHub Copilot se zobrazí v pravém horním rohu sady Visual Studio. Nabízí možnosti otevření okna chatu, nastavení GitHub Copilotu, další informace a správu předplatného copilotu.

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

Vydáno únor 2024

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.9
STL (Standard Library) sloučené funkce C++23, vylepšení výkonu, vylepšené chování, řešení problémů LWG a opravené chyby Protokol změn STL 17.9
Nové funkce integrovaného vývojového prostředí sady Visual Studio 17.9 Zpráva k vydání verze pro Visual Studio 2022 verze 17.9
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.9 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022
Souhrn aktualizací back-endu C++ Aktualizace back-endu MSVC od sady Visual Studio 2022 verze 17.3

Částečný seznam nových funkcí:

  • #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 Build Insights tak, že přejdete na sestavení>Build Insights v sestavení řešení.>

    Snímek obrazovky s diagnostikou #include

    Nad znakem #include je odkaz **odkaz** a mnoho 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.

    Snímek obrazovky s oknem rozložení paměti

    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.

    Snímek obrazovky s dialogovým oknem možností 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 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.

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

Vydáno v listopadu 2023

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.8
STL (Standard Library) sloučené funkce C++26, C++23, rozšíření C++20, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.8
Nové funkce integrovaného vývojového prostředí sady Visual Studio 17.8 Zpráva k vydání verze pro Visual Studio 2022 verze 17.8
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.8 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022
Přehled vylepšení jazyka C++ v sadě Visual Studio, VS Code a vcpkg během roku 2023 Rok vylepšení jazyka C++

Částečný seznam nových funkcí:

  • 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 Insights 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 a vliv souborů hlaviček na čas sestavení. Další informace najdete v tématu Kurz: Řešení potíží s funkcí v čase sestavení a kurz: Řešení potíží s dopadem souboru hlaviček na čas sestavení.
  • 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.

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

Vydáno 2023.

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.7
Nové funkce C++ specifické pro vývoj her Uvolnění výkonu sady Visual Studio 2022 pro vývoj her v jazyce C++
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.7
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.7 Zpráva k vydání verze pro Visual Studio 2022 verze 17.7
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.7 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí:

  • 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
  • C++ Build Insights 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ší.

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

Vydáno v květnu 2023

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.6
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.6
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.6 Zpráva k vydání verze pro Visual Studio 2022 verze 17.6
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.6 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí zahrnuje:

  • Ladění skriptů CMake
  • Integrovaná podpora pro jazyk HLSL (High Level Shading Language)
  • Prohlížeč protokolů unreal engine
  • Ve výchozím nastavení se teď přidá VCPKG.
  • Počáteční podpora pro C++20 v projektech C++/CLI a některé standardní funkce knihovny C++23 pro rozsahy.

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

Vydáno 2023. února 2023

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.5
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.5
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.5 Zpráva k vydání verze pro Visual Studio 2022 verze 17.5

Částečný seznam nových funkcí zahrnuje:

  • 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]]. 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_stringwformat_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

Vydáno v listopadu 2022

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.4
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.4
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.4 Zpráva k vydání verze pro Visual Studio 2022 verze 17.4
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.4 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí ve verzi 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

    • P1328R1 constexpr type_info::operator==()

    • ranges::iotaP2440R1 , ranges::shift_leftranges::shift_right

    • P2441R2 views::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í využívající Správce připojení 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

Vydáno 2022

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Vylepšení C++ ve verzi 17.3
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.3
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.3 Zpráva k vydání verze pro Visual Studio 2022 verze 17.3
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.3 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí ve verzi 17.3:

  • 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

Vydáno v květnu 2022

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Visual Studio 2022 17.2 je teď k dispozici.
Standardní knihovna (STL) sloučila sestavy chyb C++20, funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.2
Nové funkce integrovaného vývojového prostředí sady Visual Studio 17.2 Zpráva k vydání verze pro Visual Studio 2022 verze 17.2
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.2 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí ve verzi 17.2:

  • 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

Vydáno února 2022

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Visual Studio 2022 17.1 je teď k dispozici!
STL (Standard Library) sloučené funkce C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.1
Nové funkce integrovaného vývojového prostředí sady Visual Studio 17.1 Zpráva k vydání verze pro Visual Studio 2022 verze 17.1
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.1 Vylepšení shody jazyka C++, změny chování a opravy chyb v sadě Visual Studio 2022

Částečný seznam nových funkcí ve verzi 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

Vydáno v listopadu 2021

Další informace na téma Seznamte se s
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.0 Zpráva k vydání verze pro Visual Studio 2022 verze 17.0
Standardní knihovna (STL) sloučila funkce C++26 a C++23, sestavy chyb C++20, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.0
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.0 Vylepšení shody c++, změny chování a opravy chyb v sadě Visual Studio 2022 17.10

Přehled některých nových funkcí v sadě 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::string constexpr in VS 2019 16.10. Teď se podporuje pro Clang.
  • P1004R2 Made std::vector constexprin 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

Poznámky k verzi pro starší verze C++ jsou k dispozici také:

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é.