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.

Novinky pro C++ ve Visual Studiu ve verzi 17.13

vydáno v únoru 2025

Další informace na téma Podívejte se
Novinky pro vývojáře v jazyce C++ Novinky pro vývojáře v jazyce C++ v sadě Visual Studio 2022 17.13
Standardní knihovna (STL) sloučila funkce C++26 a C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Seznam změn STL 17.13
Nové funkce v integrovaném vývojovém prostředí (IDE) Poznámky k vydání Visual Studio 2022 verze 17.13
Aktualizace jazyka C++ aktualizace kompilátoru MSVC v sadě Visual Studio 2022 17.13
Vylepšení shody jazyka C++ Vylepšení konformity C++, změny chování a opravy chyb ve Visual Studio 2022 17.13

Stručný přehled některých nových funkcí:

  • vylepšení jazyka C++

    • Vyzkoušejte funkce C++23 Preview nastavením jazykového standardu C++ na /std:c++23preview. Toto nastavení umožňuje nejnovější funkce C++23 a opravy chyb. Pro více informací, viz /std (specifikace verze jazykového standardu).

    • Podpora přípony size_t literálu v jazyce C++23, která pomáhá vyhnout se zkrácení nebo neshodám při porovnání se znaménkovými čísly – zejména při psaní smyček. Příklad:

      // Infinite loop if v.size > max unsigned int 
      for (auto i = 0u; i < v.size(); ++i)
      { 
        ...
      } 
      
      // Fixed because of uz literal 
      for (auto i = 0uz; i < v.size(); ++i)
      { 
        ...
      } 
      
    • Podpora délky vektorů pro generování kódu na platformě x86 a x64 Další informace najdete v tématu /vlen.

    • Podpora pro Intel Advanced Vector Extensions 10 verze 1. Další informace o /arch:AVX10.1naleznete v tématu /arch (x64).

  • vylepšení standardní knihovny

    • Podpora standardní knihovny pro couroutines V tomto příkladu z P2502R2je funkce fib korutinem. Při spuštění příkazu co_yield je fib pozastaven a hodnota se vrátí volajícímu. Později můžete obnovit korutinu fib, abyste vytvořili více hodnot, aniž by bylo nutné ručně spravovat stav.

      std::generator<int> fib()
      { 
        auto a = 0, b = 1; 
      
        while (true)
        { 
            co_yield std::exchange(a, std::exchange(b, a + b)); 
        }
      } 
      
      int answer_to_the_universe()
      { 
        auto rng = fib() | std::views::drop(6) | std::views::take(3); 
        return std::ranges::fold_left(std::move(range), 0, std::plus{}); 
      } 
      
  • Přesunuly se system_clock, high_resolution_clocka chrono_literals z běžně zahrnuté interní hlavičky do <chrono>. Pokud se zobrazí chyby kompilátoru, které typy, jako jsou system_clock nebo uživatelsky definované literály, jako je 1729ms, nerozpoznají, uveďte <chrono>.

  • Vylepšili jsme vektorizované implementace konstruktorů bitset z řetězců, basic_string::find_last_of(), remove(), ranges::removea minmax_element() a minmax() algoritmů.

  • Přidání vektorizovaných implementací:

    • find_end() a ranges::find_end pro 1 bajtové a 2 bajtové prvky.
    • basic_string::find() a basic_string::rfind() podřetězce.
    • basic_string::rfind() pro jeden znak.
  • Sloučené rekapitulace chyb C++23:

    • P3107R5 Usnadnit efektivní realizaci <print>.
    • P3235R3std::print více typů rychleji s menšími nároky na paměť.
  • GitHub Copilot

    • GitHub Copilot Free je teď k dispozici. Získejte 2 000 dokončení kódu a 50 žádostí o chat za měsíc bez poplatků.

    • Dokončování kódu pomocí GitHub Copilot nabízí automatické návrhy při psaní kódu přímo v textu. Aby bylo možné vylepšit prostředí vývojářů C++, GitHub Copilot obsahuje další relevantní soubory jako kontext. To snižuje halucinace a nabízí relevantnější a přesnější návrhy.

    • Teď můžete požádat o kontrolu kódu z GitHub Copilotu z okna Změn Gitu:

      Snímek obrazovky okna Změny Gitu se zvýrazněným tlačítkem GitHub Copilot Review.

      Okno Změny Gitu je otevřené s tlačítkem GitHub Copilot Review zvýrazněným.

      GitHub Copilot hledá potenciální problémy a vytváří pro ně komentáře:

      Snímek obrazovky GitHub Copilotu vysvětlujícího problém.

      GitHub Copilot zjistil problém s řádkem if (is_enabled_) new_site.disable(). Říká, že se může jednat o chybu a mělo by to pravděpodobně být if (is_enabled_) new_site.enable(), protože záměrnem je povolit nový web, pokud je breakpoint povolený.

      Pokud chcete tuto funkci použít, ujistěte se, že máte zapnutou následující funkci:

      • Nástroje>Možnosti>Náhledové funkce>Komentáře k pull requestům
      • Nástroje>Možnosti>GitHub>Copilot>Integrace správy zdrojového kódu>Povolit funkce Git Preview.
    • GitHub Copilot Edits je nová funkce, která může provádět změny ve více souborech v projektu. Pokud chcete zahájit novou relaci úprav, klikněte na Vytvořit novou relaci úprav v horní části okna chatu GitHub Copilot:

      snímek obrazovky s oknem GitHub Copilot Chat. Tlačítko Vytvořit novou úpravu relace je zvýrazněné.

      Popište změny, které chcete provést, a Copilot navrhne příslušné úpravy. Můžete zobrazit náhled úprav 1 po druhém a přijmout ty, které chcete, nebo provést opravy:

      snímek obrazovky s oknem GitHub Copilot Chat zobrazující soubory, které upravil.

      GitHub Copilot zobrazuje souhrn provedených změn, například 1. Vytvořte novou podtřídu range_breakpoint v include/libsdb/breakpoint.hpp" a 2. Implementujte třídu range_breakpoint v src/breakpoint.cpp. Zobrazí se možnost přijmout změny.

      Další informace najdete v tématu , jak efektivně procházet více souborů pomocíGitHub Copilot Edits.

  • CMake

    • Nyní podporuje předvolby CMake v9. Nová rozšíření maker v předdefinačním poli zahrnutí Další informace najdete v sekci Makro expanze v oficiální dokumentaci CMake.

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

Vydáno v listopadu 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.12
Standardní knihovna (STL) sloučila funkce C++26 a C++23, řešení problémů LWG, vylepšení výkonu, vylepšené chování a opravené chyby Protokol změn STL 17.12
Nové funkce v integrovaném vývojovém prostředí sady Visual Studio 17.12 Zpráva k vydání verze pro Visual Studio 2022 verze 17.12
Vylepšení shody jazyka C++ v sadě Visual Studio 2022 17.12 Vylepšení shody c++, změny chování a opravy chyb v sadě Visual Studio 2022 17.12

Stručný přehled některých nových funkcí:

  • Vylepšení standardní knihovny
    • Implementace rozsahů formátování C++23 (P2286R8) je dokončena. Byly přidány formátovací moduly pro adaptéry stackkontejneru , queuea priority_queue.
    • Byly přidány multidimenzionální operátory indexu, které také podporují <mdspan>. Například: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Vývoj her v jazyce C++
  • Vytváření přehledů
    • Na vybraných souborech můžete spustit Build Insights. Vyberte požadované soubory v Průzkumník řešení, klikněte pravým tlačítkem a zvolte Spustit přehledy sestavení u vybraných souborů:Snímek obrazovky se soubory v Průzkumník řešení Místní nabídka je otevřená a zvýrazněná možnost Spustit přehledy sestavení ve vybraných souborech.
    • Výsledky Build Insights můžete filtrovat podle projektu. Klikněte na tlačítko filtru v záhlaví sloupce filtru a vyberte projekty, pro které chcete zobrazit výsledky: Snímek obrazovky okna Build Insights s otevřenou kartou Zahrnuté soubory Tlačítko filtru bylo vybráno a zobrazí se seznam projektů. Zaškrtávací políčka vedle dvou projektů jsou zaškrtnutá.
    • Kliknutím na ikonu otazníku v okně Build Insights zobrazíte krátký popis karet v okně Build Insights a odkaz na dokumentaci s podrobným vysvětlením: Snímek obrazovky okna Build Insights se zvýrazněným tlačítkem vysvětlení zobrazení (otazníkem v kruhu)
  • GitHub Copilot
    • Kliknutím na Možnost Zeptat se copilotu vedle hodnoty proměnné získáte přehledy řízené AI o tom, co vedlo k jeho aktuálnímu stavu. Například následující program má v podmínce smyčky chybu „off-by-one“:

    Snímek obrazovky z okna

    Kód, který způsobil tento problém, je: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Pokud kliknete na ikonu Zeptat se Copilota v případě proměnné it, vysvětlí vám, proč je <NULL>.

    Snímek obrazovky s oknem GitHub Copilot

    Tato chyba je ve funkci definované jako `int calculate_number_of_cats(const house & h)`. Zpráva GitHub Copilot říká: "Hodnota výrazu je NULL, což znamená, že iterátor neodkazuje na žádný platný prvek vektoru animals_. V kontextu vašeho programu by měl procházet vektor animals_ v objektu domu, aby se spočítal počet objektů typu kočka. Proč má hodnotu null. Na základě místních hodnot a kontextu zásobníku volání: objekt domu h má prázdný vektor animals_ (size=0). Podmínka smyčky it <= h.animals_.end() není správná. To by mělo být != h.animals_.end()."

    • Pokud chcete získat nápovědu k chybě a navrhované opravě, klikněte v seznamu chyb sady Visual Studio na možnost Zeptat se copilotu. Příklad:

    Snímek obrazovky s oknem Seznam chyb

    Vedle ikony Ask Copilot, která je zvýrazněná, je chyba, že unique_ptr se pokouší odkazovat na odstraněnou funkci.

    Pokud kliknete na "Zeptat se Copilota", řekne vám o chybě.

    Snímek obrazovky s vysvětlením chyby od GitHub Copilot.

    Zpráva Copilot říká: "K chybě dochází, protože smyčka založená na rozsahu se pokusila zkopírovat objekty std::unique_ptr, což není povoleno, protože std::unique_ptr nelze kopírovat. Abych to opravil, změnil jsem smyčku tak, aby používala odkaz a předešlo se kopírování objektů std::unique_ptr. Tímto způsobem smyčka iteruje odkazy na objekty std::unique_ptr, které jsou povoleny."

  • Ladění
    • Nové ladicí vizualizéry pro mutex, recursive_mutexa move_iterator.
    • Ladicí program nyní zobrazuje návratové hodnoty přímo: Snímek obrazovky s tooltipem zobrazující hodnotu 8.25. Jedná se o výsledek výrazu, který následuje za příkazem return a který byl přeskočen.

Co je nového v C++ ve Visual Studio verze 17.11

Vydáno v srpnu 2024

Další informace na téma Podívejte se
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::mismatchcount()ranges::countfind()ranges::findranges::find_lasta .ranges::iota
  • Vývoj her v jazyce C++

    • Teď můžete ve Visual Studiu přidat běžné šablony tříd, moduly a pluginy pro Unreal Engine. Další informace najdete v tématu Přidání tříd, modulů a pluginů Unreal Engine ve Visual Studiu.
    • 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, znovu prohledat mezipaměť Blueprints, rychlý přístup k protokolu Unreal Engine a poskytuje přímý 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. Je vybrán sloupec Projekt a jsou vybrány projekty, jako jsou (Vybrat vše), CompilerIdC, OpenAL, common a další. Zahrnuté soubory jsou uvedeny podle relativní cesty a názvu souboru a seskupené dohromady.

  • ladění CMake

    • Nyní můžete ladit skripty CMake a CMakeLists.txt soubory v ladicím programu sady Visual Studio pro projekty CMake, které cílí na Linux prostřednictvím Windows Subsystem for Linux (WSL) nebo SSH. Pokud chcete zahájit ladicí relaci CMake v sadě Visual Studio, nastavte v CMakeLists.txt souboru zarážku a pak přejděte na Project>Nakonfigurovat mezipaměť s laděním CMake.
  • GitHub 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ý je odkaz Další informace.

    • 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 rychlejší.
  • Vylepšení diagnostiky

    • Vylepšená diagnostika při volání std::get<T> na std::tuple, která má více instancí T v argumentech šablony. MSVC dříve hlásil:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Teď hlásí:
      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 dříve hlásil:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Teď hlásí:
      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 ve Visual Studio verze 17.10 pro C++

Vydáno v květnu 2024

Další informace na téma Podívejte se
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 ovlivňuje projekty, které předpokládají, že verze MSVC jsou všechny 19.3X pro vydání Visual Studio 2022, naleznete v tématu Číslo podverze nástroje MSVC 14.40 v sadě VS 2022 v17.10.
  • Vylepšení standardní knihovny: Standardní knihovna přidala podporu pro P2510R3 formátovací ukazatele, což přináší sadu specifikátorů formátu pro ukazatele více do 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: Nyní poskytuje informace o instanciaci šablony. Viz Zobrazení šablon pro Build Insights v sadě Visual Studio nebo Pure Virtual C++ – zobrazení šablon pro Build Insights v záznamu sady Visual Studio.
  • Plug-in Unreal Engine: Existuje nová volitelná funkce pro spuštění plug-inu Unreal Engine na pozadí, což snižuje náklady na start. Jedná se o funkci výslovného souhlasu, která se aktivuje prostřednictvím modulu Možnosti>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 můžete teď připnout v Zobrazení cílů CMake.
  • Správce připojení UX: Uživatelské prostředí poskytuje plynulejší zkušenost 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>Prostředí>Testovacích funkcích a pro začátek přepněte na větev žádosti o přijetí změn.
  • AI-vytvořený obsah: GitHub Copilot teď může vytvářet popisy pull requestů. Vyžaduje aktivní předplatné GitHub Copilot. Vyzkoušejte si to kliknutím na ikonu třpytivého pera pro přidání AI generovaného popisu žá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 náhledu po přejití myší

    Myš se pohybuje nad řádkem std::filesystem::path 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ážek nebo trasových bodů: Nyní můžete vytvářet podmíněné zarážky nebo trasové body přímo z výrazů ve zdrojovém kódu prostřednictvím nabídky po kliknutí pravým tlačítkem myši. Funguje to u názvů vlastností nebo polí a hodnot z automatických proměnných, místních proměnných, sledovacích oken nebo datových tipů.
  • Dialogové okno Připojit k procesu: Funkce poskytované dialogem Připojit k procesu jsou uživatelsky přívětivější. Nyní můžete snadno přepínat mezi zobrazením stromu a seznamu, lépe uspořádat procesy pomocí skládacích sekcí a vybrat typy kódu pomocí zjednodušeného rozbalovacího seznamu. 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 nyní sjednocena a dodávají se přímo ve Visual Studiu. Pro instalaci nainstalujte komponentu GitHub Copilot v programu Instalační program pro Visual Studio.

    Snímek obrazovky s možností instalace GitHub Copilot v Instalačním programu pro Visual Studio.

    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++ ve verzi 17.9 sady Visual Studio

Vydáno v únoru 2024

Další informace na téma Podívejte se
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čil funkce C++23, vylepšení výkonu, vylepšené chování, vyřešil problémy LWG a opravil 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 a zvolíte #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í vašich direktiv, spusťte nástroj Build Insights, a to tak, že přejdete na Sestavení Spustit Build Insights na řešení.

    Snímek obrazovky s diagnostikou #include

    Nad znakem #include je referenční 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á zobrazuje uspořádání paměti pro vaše třídy, struktury a unie. 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 Nástroje>Možnosti 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 "Cesta ke spustitelnému souboru CMake".

  • Vylepšená technologie IntelliSense pro projekty unreal Engine.
  • Vylepšená podpora C++23: std::format a std::spanformattable, range_format, format_kind a set_debug_format() jako součást P2286R8 Formatting Ranges podle P0009R18 a následných změn, které byly provedeny ve standardu C++23. Také format() může formátovat ukazatele podle 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 členskou 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 ztlumené. Pro umístění kurzoru na ztmavený prvek můžete použít nabídku žárovky k odstranění tohoto include nebo všech nepoužitých include. 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í zahrnutí C/C++ 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 vložováním 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 v srpnu 2023.

Další informace na téma Podívejte se
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ší ladění a rychlejší doba 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 v C++ ve verzi 17.6 sady Visual Studio

Vydáno v květnu 2023

Další informace na téma Seznamte se s
Novinky pro vývojáře v jazyce C++ Co je nového 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í je nyní přidán 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 v únoru 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::forward, std::move_if_noexcept a std::forward_like nyní nevytvářejí volání funkce ve vygenerovaném kódu, ani v ladicím režimu. Tato změna zabraňuje pojmenovaným konverzím způsobovat zbytečné náklady v ladicích sestaveních. /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í a 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 v režimu /std:c11 nebo novějším pomocí možnosti /experimental:c11atomics.

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

  • Nová verze preview funkce, Vzdálený průzkumník souborů, umožňuje zobrazit adresář souborů na vzdálených strojích v rámci VS a nahrávat a stahovat soubory v rámci něj.

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

  • Byla přidána podpora pro Hot Reload 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ájili jsme zavádění experimentu, který poskytuje více inteligentních výsledků v automatickém dokončování a seznamu členů pro 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.

  • Byla přidána lokalizace do rozšíření Image Watch. Toto rozšíření je k dispozici v Obchodě a není součástí Instalačního programu pro Visual Studio.

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

  • Došlo k několika vylepšením rozšíření maker IntelliSense. Umožnili jsme rekurzivní rozšíření v dalších kontextech a do vyskakovacích oken jsme přidali možnosti pro zkopírování rozšíření do schránky nebo rozbalení makra přímo.

  • 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 na referenci Blueprintu pro třídu nebo vlastnost 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.

  • Funkce Průzkumníka testů umožnila 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 Podívejte se
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 by mohly zaznamenat zlepšení o 20–35 % ve verzi 17.3.

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

    • NRVO je povolen pro případy, které zahrnují zpracování výjimek a smyček.
    • NRVO je povoleno i v /Od případě, že uživatel použije volbu /Zc:nrvo, nebo od /std:c++20 a 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 .

  • Byla přidána podpora ve 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++ .

  • IntelliSense nyní respektuje pořadí předem zahrnutých hlaviček, když je jednou z nich PCH. Dříve, když byl PCH použit prostřednictvím /Yu a vynuceně zahrnutý prostřednictvím /FI, IntelliSense by to vždy nejprve zpracoval před všemi ostatními hlavičkami zahrnutými prostřednictvím /FI. Toto chování se neshodovalo s chováním ve verzi. Při této změně /FI se hlavičky zpracovávají v pořadí, v jakém jsou zadané.

  • Odebrali jsme interní předpony 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.
    • Podpora přidána pro sestavování s NDK 23 a 24
    • Aktualizace komponenty NDK na LTS verze 23
  • Přidány vektorizované implementace ranges::min_element(), ranges::max_element() a ranges::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:

    • P2302R4, ranges::containsranges::contains_subrange

    • P2499R0string_view 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řidejte alias pmr pro std::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.

  • Verze Arm64 Visual Studio nyní obsahují Arm64 verze 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 vydání 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 v srpnu 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ím programu pro Visual Studio v pracovní zátěži Vývoj her pomocí C++ vybrána podpora integrovaného vývojového prostředí (IDE) pro Unreal Engine. 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 byla vylepšena. 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 podmínek, návraty enum typu atd.) je nyní seznam automatického dokončování filtrován pouze na odpovídající enumerátory a související konstrukty.
  • 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áno okno sériového monitoru pro vložený vývoj, které je k dispozici prostřednictvím Debug>Windows>Serial Monitor.
  • 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 vedle sebe nainstalované sady nástrojů C++ pro vývoj ve verzi 16.11 na verzi 14.29.30145.00. Nejnovější verze nástrojové sady Dev 16.11 C++ obsahuje důležité opravy chyb, včetně vyřešení všech zbývajících nálezů chyb C++20. Další informace o opravách chyb, včetně sestav chyb C++20 ve verzi Dev 16.11, viz poznámky k vydání verze 16.11.14 pro Visual Studio 2019.
  • 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 Podívejte se
Novinky pro vývojáře v jazyce C++ Visual Studio 2022 17.2 je teď k dispozici.
Standardní knihovna (STL) sloučila hlášení o chybách C++20, funkce C++23, vyř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 vlastnost deducing this z C++23, která je k dispozici pod možností /std:c++latest.
  • Přidání podpory IntelliSense pro funkce C++23 odvození this a if consteval.
  • Přidána podpora pro názvy a typové nápovědy vložených parametrů, přepínaná stiskem Alt+F1 nebo dvojitým 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ž dvakrát kliknete na objekt RTOS v okně nástroje, přidá sledování objektu.
    • Když v okně nástroje RTOS vyberete počáteční a koncové hodnoty ukazatele zásobníku, zobrazí se tyto hodnoty v okně paměti.
    • Přidána podpora práce s vlákny pro cílová zařízení v okně zásobníku volání.
    • Uživatelé nyní mohou vybrat ikonu špendlíku vedle periferních zařízení, registrů nebo polí, aby je připnuli na vrchol Periferního pohledu.
  • 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é pod /std:c++20 volbou. Další informace o implementovaných backportech najdete v protokolu změn VS 2022 v úložišti Microsoft/STL na GitHubu a v blogovém příspěvku MSVC's STL Completes /std:c++20.
  • Přidali jsme různé funkce knihovny C++23, které jsou k dispozici pod možností /std:c++latest. Další informace o nových funkcích najdete v zápisu změn 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++ ve verzi 17.1 sady Visual Studio

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.
  • Nyní můžete ladit jádrové výpisy na vzdáleném systému macOS z Visual Studio pomocí LLDB nebo GDB.
  • Verze Clang a LLVM dodávané s Visual Studio 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 je CMakeLists.txt zjištěno na jiné úrovni pracovního prostoru, zobrazí se oznámení s výzvou k aktivaci integrace CMake ve Visual Studiu.
  • 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 >>
  • Přidali jsme nové zobrazení vláken pro projekty RTOS, které je dostupné prostřednictvím ladění>Windows>Objekty 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 Podívejte se
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++23 a C++26, 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 nyní ve výchozím nastavení používá pro záznamy ladění hashování zdrojů 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í.

Aktualizace za běhu pro nativní kód C++

  • Hot Reload pro C++ umožňuje provádět různé typy úprav kódu na běžící aplikaci a aplikovat je, aniž by bylo nutné pozastavit provádění aplikace například pomocí breakpointu.

Když v sadě Visual Studio 2022 spustíte aplikaci v ladicím programu, můžete pomocí tlačítka Hot Reload 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 úpravách vizte Edit and Continue (C++).

  • Hot Reload 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.json. 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 Changelogu týmu STL.

  • Přidány vizualizéry ladění pro zlepšení způsobu zobrazení následujících typů: source_location, bind_front(), u8string (a jejich iterátory), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (a jeho iterátory/sentinel), ranges::ref_view, thread, thread::id, jthread a filesystem::path.
  • Přidáno [[nodiscard]] do rodiny funkcí v <string> a k různým funkcím v <locale>, jako jsou členské funkce collate, has_facet(), a rodiny isalnum() a tolower().
  • P0980R1 Vytvořeno std::stringconstexpr ve VS 2019 16.10. Nyní podporováno pro Clang.
  • P1004R2 Vytvořeno std::vectorconstexpr ve VS 2019 16.10. Nyní je podporováno pro Clang.

Zvýrazněné funkce C++23

  • P1048R1 Přidána is_scoped_enum, nová vlastnost pro standardní knihovnu jazyka C++, která detekuje, zda je typ omezený výčtem.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains() pro basic_string a basic_string_view
  • P1682R3to_underlying() pro výčty
  • P2162R2 Povolit dědění z std::variant
  • P2166R1 Zakázat vytváření basic_string a basic_string_view z nullptr. Tato změna je neslučitelná se zdrojovým kódem. Kód, který dříve měl nedefinované chování za běhu, je nyní odmítnut s chybami kompilátoru.
  • P2186R2 Byla odebrána podpora garbage collectionu. 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> Nyní zjistí, kdy dochází k zápisu do back_insert_iterator pro basic_string nebo vector, a provádí rychlejší volání na insert() u end() kontejneru.
  • Vylepšili jsme výkon std::find() a std::count() pro 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 vydání 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.

C++ AMP je zastaralý

  • 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ývojová pracovní zátěž pro Game development with C++ nyní nainstaluje nejnovější Unreal Engine s podporou Visual Studio 2022.

Vylepšení analýzy kódu

  • Analýza kódu teď vynucuje, aby se kontrolovaly návratové hodnoty funkcí anotovaných pomocí _Check_return_ nebo _Must_inspect_result_.
  • Detekce dereference ukazatele null je vylepšená v našich nástrojích pro analýzu kódu.
  • Přidali jsme podporu pro gsl::not_null v analýze kódu.
  • Podpora pro Libfuzzer v rámci možnosti kompilátoru /fsanitize=fuzzer .

Poznámky k vydání 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! 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 můžete nahlásit problém nebo navrhnout funkci nebo z Nápověda>Odeslat zpětnou vazbu. 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 Visual Studio jsou zvláště zajímavé.