Udostępnij za pośrednictwem


Co nowego w języku C++ w programie Visual Studio 2022

Program Visual Studio 2022 oferuje wiele aktualizacji i poprawek kompilatora i narzędzi języka Microsoft C++. Środowisko IDE programu Visual Studio oferuje również znaczne ulepszenia wydajności i produktywności, a teraz działa natywnie jako aplikacja 64-bitowa.

  • Aby uzyskać więcej informacji na temat nowości we wszystkich programach Visual Studio, zobacz Co nowego w programie Visual Studio 2022.
  • Aby uzyskać informacje na temat dat kompilacji wersji, zobacz Historia wersji programu Visual Studio 2022.

Co nowego w języku C++ w programie Visual Studio w wersji 17.14

Wydany w maju 2025 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.14
Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy Dziennik zmian STL 17.14
Nowe funkcje w środowisku IDE Informacje o wersji 17.14 programu Visual Studio 2022
Aktualizacje języka C++ Aktualizacje języka C++ w MSVC w programie Visual Studio 2022 17.14
Ulepszenia zgodności języka C++ Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.14

Krótkie wyróżnienie niektórych nowych funkcji:

  • Debugowanie dynamiczne języka C++ umożliwia debugowanie zoptymalizowanego kodu bez wpływu na wydajność. Aby uzyskać więcej informacji, zobacz Debugowanie dynamiczne języka C++.

  • Zaimplementowano funkcje języka C++23 (wymaga /std:c++latest lub /std:c++23preview):

  • Automatycznie generuj komentarze dokumentacji za pomocą narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Wprowadzenie do automatycznego generowania komentarzy dokumentacji w programie Visual Studio.

  • Użyj selektora modelu w programie Visual Studio, aby wybrać model AI dla narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Zmienianie modelu AI dla czatu Copilot. Ten zrzut ekranu przedstawia selektor modelu w dolnej części okna czatu w usłudze GitHub Copilot:

    Zrzut ekranu przedstawiający okno czatu w usłudze GitHub Copilot z wyróżnioną listą rozwijaną Selektor modelu.

    Lista rozwijana selektora modelu jest otwarta. Dostępne opcje to: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking i inne.

  • Ulepszenia integracji Unreal Engine

    • Debugger C++ programu Visual Studio obsługuje teraz Blueprints w Unreal Engine.
    • Polecenia służące do kompilowania plików, modułów i wtyczek są dostępne natywnie w programie Visual Studio.
  • Nowa flaga kompilatora /forceInterlockedFunctions dynamicznie wybiera między instrukcjami załadunku i przechowywania wyłącznego Armv8.0 lub atomowymi instrukcjami Rozszerzenia Dużego Systemu Armv8.1 (LSE) na podstawie możliwości procesora w czasie wykonywania.

  • Dodano obsługę uzupełniania opartego na technologii IntelliSense i szybkich informacji dotyczących modułów CMake w programie Visual Studio. Możesz wyświetlić wszystkie dostępne moduły CMake, a po umieszczeniu wskaźnika myszy na odwołanym module CMake funkcja IntelliSense zawiera więcej informacji na temat wybranego modułu:

    Zrzut ekranu przedstawiający funkcję IntelliSense wyjaśniającą pomocników drukowania języka C.

    Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor jest na include (CMakePrintHelpers). IntelliSense mówi: Funkcje ułatwiające drukowanie właściwości i zmiennych, przydatne do debugowania.

    Po rozpoczęciu wpisywania nazwy modułu CMake w plikach CMakeLists.txt lub innych plikach skryptów CMake, funkcja IntelliSense udostępnia listę dostępnych modułów do wyboru:

    Zrzut ekranu przedstawiający funkcję IntelliSense dla instrukcji 'include'.

    Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor znajduje się na include (CMake). Lista rozwijana Intellisense zawiera wpisy dla CMake Add Fortran Subdirectory, CMake Dependent Option i nie tylko.

  • Guidelines Support Library (GSL) 4.2.0: Ta wersja zawiera ulepszenia wydajności dla gsl::span, nowych funkcji i lepsze dopasowanie do standardów języka C++. Aby uzyskać więcej informacji, zobacz Ogłoszenie Biblioteki Wsparcia dla Wytycznych w wersji 4.2.0.

Co nowego w języku C++ w programie Visual Studio w wersji 17.13

wydany w lutym 2025 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.13
Funkcje biblioteki standardowej (STL) C++26 i C++23, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy Log zmian STL 17.13
Nowe funkcje w środowisku IDE Notatki o wydaniu wersji 17.13 programu Visual Studio 2022
Aktualizacje języka C++ aktualizacje kompilatora MSVC w programie Visual Studio 2022 17.13
Ulepszenia zgodności języka C++ ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.13

Krótkie wyróżnienie niektórych nowych funkcji:

  • ulepszenia języka C++

    • Wypróbuj funkcje języka C++23 w wersji zapoznawczej, ustawiając standard języka C++ na /std:c++23preview. To ustawienie umożliwia korzystanie z najnowszych funkcji i poprawek usterek języka C++23. Aby uzyskać więcej informacji, zobacz /std (Określ wersję standardową języka).

    • Obsługa sufiksu literału size_t języka C++23, która pomaga uniknąć obcinania lub niezgodności porównania ze znakiem — szczególnie podczas pisania pętli. Na przykład:

      // 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)
      { 
        ...
      } 
      
    • Obsługa długości wektorów dla generowania kodu na x86 i x64. Aby uzyskać więcej informacji, zobacz /vlen.

    • Obsługa rozszerzeń Intel Advanced Vector Extensions 10 wersja 1. Aby uzyskać więcej informacji na temat /arch:AVX10.1, zobacz /arch (x64).

  • ulepszenia biblioteki standardowej

    • Obsługa standardowej biblioteki dla cukinii. W tym przykładzie z P2502R2, funkcja fib jest korutyną. Po wykonaniu instrukcji co_yieldfib zostaje zawieszony, a wartość zostaje zwrócona do wywołującego. Możesz wznowić coroutine fib później, aby wygenerować więcej wartości bez konieczności ręcznego zarządzania stanem.

      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{}); 
      } 
      
  • Przeniesiono system_clock, high_resolution_clocki chrono_literals z często dołączonego nagłówka wewnętrznego do <chrono>. Jeśli zobaczysz błędy kompilatora wskazujące, że typy, takie jak system_clock, lub literały zdefiniowane przez użytkownika, takie jak 1729ms, nie są rozpoznawane, zawrzyj <chrono>.

  • Ulepszono wektoryzowane implementacje konstruktorów bitset z ciągów, basic_string::find_last_of(), remove(), ranges::removeoraz rodziny algorytmów minmax_element() i minmax().

  • Dodano wektoryzowane implementacje:

    • find_end() i ranges::find_end dla elementów 1-bajtowych i 2-bajtowych.
    • basic_string::find() i basic_string::rfind() dla podciągu.
    • basic_string::rfind() dla pojedynczego znaku.
  • Połączone raporty o błędach C++23:

    • P3107R5 Pozwól na wydajną implementację <print>.
    • P3235R3std::print Więcej typów, szybciej i z mniejszym zużyciem pamięci.
  • GitHub Copilot

    • Usługa GitHub Copilot Free jest teraz dostępna. Uzyskaj 2000 uzupełnień kodu i 50 żądań czatu miesięcznie bez ponoszenia kosztów.

    • Uzupełnianie kodu narzędzia GitHub Copilot udostępnia sugestie autouzupełniania w tekście podczas programowania. Aby ulepszyć środowisko deweloperów języka C++, narzędzie GitHub Copilot zawiera inne istotne pliki jako kontekst. Zmniejsza to błędy, oferując bardziej istotne i dokładne sugestie.

    • Teraz możesz zażądać przeglądu kodu z witryny GitHub Copilot w oknie Git Changes:

      Zrzut ekranu przedstawiający okno Git Changes z wyróżnionym przyciskiem GitHub Copilot Review.

      Okno Zmiany w Gicie jest otwarte, a przycisk Recenzja GitHub Copilot jest wyróżniony.

      GitHub Copilot szuka potencjalnych problemów i tworzy dla nich komentarze:

      Zrzut ekranu przedstawiający narzędzie GitHub Copilot wyjaśniające problem.

      GitHub Copilot wykrył problem w linii if (is_enabled_) new_site.disable(). Proponuje się, że może to być błąd i prawdopodobnie powinno być: if (is_enabled_) new_site.enable(), ponieważ zamiarem wydaje się być włączenie nowej witryny, jeśli punkt przerwania jest włączony.

      Aby użyć tej funkcji, upewnij się, że są włączone następujące elementy:

      • Narzędzia>Opcje>Podgląd funkcji>Komentarze dotyczące żądania ściągnięcia
      • Narzędzia>Opcje>GitHub>Copilot>Integracja kontroli źródła>Włącz funkcje podglądu Git.
    • GitHub Copilot Edits to nowa funkcja, która może wprowadzać zmiany w wielu plikach w projekcie. Aby rozpocząć nową sesję Edits, kliknij Utwórz nową sesję edycji w górnej części okna czatu GitHub Copilot:

      Zrzut ekranu przedstawiający okno czatu Copilot w usłudze GitHub. Przycisk Utwórz nową sesję edycji jest wyróżniony.

      Opisz zmiany, które chcesz wprowadzić, a Copilot sugeruje odpowiednie zmiany. Możesz wyświetlić podgląd edycji jeden po jednym i zaakceptować żądane lub wprowadzić poprawki:

      Zrzut ekranu przedstawiający okno czatu Copilot w usłudze GitHub zawierające edytowane pliki.

      Usługa GitHub Copilot wyświetla podsumowanie wprowadzonych zmian, takich jak 1. Utwórz nową podklasę range_breakpoint w pliku include/libsdb/breakpoint.hpp" i 2. Zaimplementuj klasę range_breakpoint w pliku src/breakpoint.cpp. Zostanie wyświetlona opcja zaakceptowania zmian.

      Aby uzyskać więcej informacji, zobacz wydajniejsze iterowanie po wielu plikach za pomocą funkcji Copilot Edits w GitHubie.

  • CMake

    • Teraz obsługuje ustawienia wstępne narzędzia CMake w wersji 9. Nowe rozszerzenia makr w polu dołączanym danego ustawienia wstępnego. Aby uzyskać więcej informacji, zobacz Rozszerzenie makr w oficjalnej dokumentacji narzędzia CMake.

Co nowego w języku C++ w programie Visual Studio w wersji 17.12

Wydany w listopadzie 2024 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.12
Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy Dziennik zmian STL 17.12
Nowe funkcje w środowisku IDE programu Visual Studio 17.12 Informacje o wersji 17.12 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.12 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.12

Krótkie wyróżnienie niektórych nowych funkcji:

  • Ulepszenia biblioteki standardowej
    • Ukończono implementację zakresów formatowania języka C++23 (P2286R8). Dodano moduły formatujące dla adapterów kontenerów stack, queuei priority_queue.
    • Dodano wielowymiarowe operatory indeksowania, które również obsługują <mdspan>. Na przykład: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Programowanie gier w języku C++
  • Wgląd w budowę
    • Możesz uruchomić narzędzie Build Insights dla wybranych plików. Wybierz odpowiednie pliki w Eksplorator rozwiązań, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom szczegółowe informacje o kompilacji w wybranych plikach:Zrzut ekranu przedstawiający pliki w Eksplorator rozwiązań. Menu kontekstowe jest otwarte, a opcja Uruchom szczegółowe informacje o kompilacji w wybranych plikach jest wyróżniona.
    • Wyniki funkcji Build Insights można filtrować według projektu. Kliknij przycisk filtru w nagłówku kolumny filtru i wybierz projekty, dla których chcesz wyświetlić wyniki: Zrzut ekranu przedstawiający okno Build Insights z otwartą kartą Dołączone pliki. Przycisk filtru został wybrany i zostanie wyświetlona lista projektów. Pola wyboru obok dwóch projektów są zaznaczone.
    • Kliknięcie ikony znaku zapytania w oknie Build Insights, aby wyświetlić krótki opis kart oraz link do dokumentacji, która zawiera szczegółowe wyjaśnienie. Zrzut ekranu przedstawiający okno Build Insights z wyróżnionym przyciskiem wyjaśnienia widoku (znak zapytania w okręgu).
  • GitHub Copilot
    • Możesz kliknąć pozycję Zapytaj Copilot obok wartości zmiennej, aby uzyskać wgląd w szczegółowe informacje oparte na sztucznej inteligencji, co doprowadziło do jego bieżącego stanu. Na przykład następujący program ma błąd off-by-one w warunku pętli:

    Zrzut ekranu przedstawiający okno Autosów. Zmienna o nazwie 'it' ma wartość NULL. Ikona Ask Copilot obok niej jest wyróżniona.

    Kod, który spowodował ten problem, to: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Jeśli klikniesz ikonę Zapytaj Copilot dla zmiennej it, zostanie wyświetlona informacja, dlaczego <NULL>:

    Zrzut ekranu przedstawiający okno narzędzia GitHub Copilot.

    Ten błąd znajduje się wewnątrz funkcji zdefiniowanej jako int calculate_number_of_cats(const house& h). Komunikat GitHub Copilot informuje: "Wartość wyrażenia to NULL, co oznacza, że iterator nie wskazuje na żaden prawidłowy element w wektorze animals_". W kontekście Twojego programu należy iterować przez elementy wektora animals_ w obiekcie house w celu zliczenia liczby obiektów typu Cat. Dlaczego ma wartość null. W oparciu o kontekst ustawień lokalnych i stosu wywołań: obiekt domu h ma pusty wektor animals_ (rozmiar=0). Warunek pętli it <= h.animals_.end() jest niepoprawny. Powinno to być zapisane jako != h.animals_.end().

    • Możesz kliknąć pozycję Zapytaj Copilota o błędy na liście błędów programu Visual Studio, aby uzyskać pomoc dotyczącą błędu i sugerowanej poprawki. Na przykład:

    Zrzut ekranu przedstawiający okno Lista błędów.

    Ikona "Ask Copilot" jest podświetlona obok błędu, gdzie unique_ptr próbuje odwołać się do usuniętej funkcji.

    Jeśli klikniesz pozycję Zapytaj Copilot, zostanie wyświetlony komunikat o błędzie:

    Zrzut ekranu przedstawiający wyjaśnienie błędu w narzędziu GitHub Copilot.

    Komunikat Copilot mówi: "Błąd występuje, ponieważ pętla oparta na zakresie próbowała skopiować obiekty std::unique_ptr, które nie są dozwolone, ponieważ nie można skopiować obiektu std::unique_ptr. Aby rozwiązać ten problem, zmieniono pętlę, aby użyć odwołania, aby uniknąć kopiowania obiektów std::unique_ptr. Dzięki temu pętla iteruje po odwołaniach do obiektów std::unique_ptr, co jest dozwolone.

  • Debugowanie
    • Nowe wizualizatory debugowania dla elementów mutex, recursive_mutexi move_iterator.
    • Debugger wyświetla teraz zwracane wartości w wierszu: zrzut ekranu przedstawiający podpowiedź z wartością 8.25. Jest to wynik wyrażenia po instrukcji return, którą przeskoczono.

Co nowego w języku C++ w programie Visual Studio w wersji 17.11

Wydany w sierpniu 2024 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.11
Funkcje biblioteki standardowej (STL), scalone funkcje C++26 i C++23, raporty o wadach języka C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy Dziennik zmian STL 17.11
Nowe funkcje w środowisku IDE programu Visual Studio 17.11 Informacje o wersji 17.11 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.11 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.11

Częściowa lista nowych funkcji:

  • Ulepszenia biblioteki standardowej

    • Zaimplementowane sformatowane wyjście teraz obejmuje std::range_formatter oraz formatery dla std::pair i std::tuple.
    • Dodano obsługę dla std::println() bez argumentów. Spowoduje to wyświetlenie pustego wiersza zgodnie z propozycją w P3142R0.
    • Ulepszona wektoryzacja dla kilku algorytmów, w tym replace_copy(), replace_copy_if(), ranges::replace_copy, ranges::replace_copy_if, find_first_of() i ranges::find_first_of, dla elementów 8-bitowych i 16-bitowych, mismatch(), ranges::mismatch, count(), ranges::count, find(), ranges::find, ranges::find_last i ranges::iota.
  • Programowanie gier w języku C++

    • Teraz można dodawać typowe szablony, moduły i wtyczki klasy Unreal Engine z poziomu programu Visual Studio. Aby uzyskać więcej informacji, zobacz Dodawanie klas, modułów i wtyczek aparatu Unreal Engine w programie Visual Studio.
    • Nowy pasek narzędzi Unreal Engine zapewnia szybki dostęp do czynności związanych z silnikiem Unreal Engine w programie Visual Studio. Pasek narzędzi umożliwia szybkie łączenie się z procesami Unreal Engine, ponowne skanowanie pamięci podręcznej Blueprints, szybki dostęp do dziennika Unreal Engine i strony konfiguracji Unreal Engine dla programu Visual Studio. Aby uzyskać więcej informacji, zobacz Unreal Engine Toolbar (Unreal Engine Toolbar).
    • Teraz możesz filtrować wyniki śledzenia według projektu. Ponadto wyniki w każdym wierszu pokazują ścieżkę względną i nazwę pliku zamiast pełnej ścieżki. Ulepszono również grupowanie wyników w widoku Dołączone pliki :

    Zrzut ekranu przedstawiający ulepszone wyniki diagnostyki uwzględnionych plików.

    Widok Uwzględnionych plików zawiera nową kolumnę dla projektu. Kolumna Project (Projekt) jest zaznaczona, a wybrane są projekty, takie jak (Select All), CompilerIdC, OpenAL, common itd. Dołączone pliki są wymienione według ścieżki względnej i nazwy pliku i zgrupowane razem.

  • debugowanie narzędzia CMake

    • Teraz możesz debugować skrypty CMake i pliki CMakeLists.txt w debuggerze Visual Studio dla projektów CMake, które są przeznaczone dla systemu Linux za pomocą Windows Subsystem for Linux (WSL) lub SSH. Aby uruchomić sesję debugowania CMake w programie Visual Studio, ustaw punkt przerwania w pliku CMakeLists.txt, a następnie przejdź do Project>, a dalej Configure Cache with CMake Debugging.
  • GitHub Copilot

    • Po umieszczeniu wskaźnika myszy na symbolach w edytorze kodu kliknij przycisk Copilot Tell me more (Pokaż mi więcej ) w oknie dialogowym Szybkie informacje, aby dowiedzieć się więcej o danym symbolu:

    Zrzut ekranu przedstawiający okno Szybkie informacje.

    Okno Szybkie informacje jest wyświetlane powyżej funkcji. Link Powiedz mi więcej jest wyróżniony.

    • GitHub Copilot może generować sugestie nazewnictwa identyfikatorów (zmiennych, metod lub klas) na podstawie sposobu użycia identyfikatora i stylu kodu.

      Zrzut ekranu przedstawiający okno dialogowe Zmiany nazwy narzędzia GitHub Copilot.

      Okno dialogowe Zmienianie nazwy zawiera pole Nowa nazwa z listą rozwijaną pokazującą następujące opcje: text_color, font_color, display_color, console_color i menu_text_color.

    Potrzebna jest aktywna subskrypcja narzędzia GitHub Copilot. Kliknij prawym przyciskiem myszy zmienną, której nazwę chcesz zmienić, a następnie wybierz polecenie Zmień nazwę (Ctrl+R, Ctrl+R). Wybierz ikonę GitHub Copilot sparkle, aby wygenerować sugestie dotyczące nazewnictwa.

  • Debugowanie

    • Warunkowe punkty przerwania w języku C++ są szybsze.
  • Ulepszenia diagnostyki

    • Ulepszona diagnostyka podczas wywoływania std::get<T> dla std::tuple, który ma wiele wystąpień T w argumentach szablonu. MSVC kiedyś raportował:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Teraz raportuje:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Ulepszona diagnostyka, jeśli std::ranges::to nie może skonstruować żądanego wyniku. MSVC kiedyś raportował:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Teraz raportuje:
      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)'

Co nowego w języku C++ w programie Visual Studio w wersji 17.10

Wydany w maju 2024 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.10
Funkcje biblioteki standardowej (STL), scalone funkcje C++26 i C++23, raporty o wadach języka C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy Dziennik zmian STL 17.10
Nowe funkcje w środowisku IDE programu Visual Studio 17.10 Informacje o wersji 17.10 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.10 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.10

Częściowa lista nowych funkcji:

  • Aktualizacja zestawu narzędzi MSVC: wersja zestawu narzędzi MSVC jest aktualizowana z wersji 19.39 do 19.40. Może to mieć wpływ na projekty, które mają założenia dotyczące wersji. Aby uzyskać więcej informacji na temat sposobów, w jakie to wpływa na projekty zakładające, że wszystkie wersje MSVC to 19.3X dla wydań Visual Studio 2022, zobacz Minor Version Number 14.40 w zestawie narzędzi MSVC w VS 2022 v17.10.
  • Ulepszenia biblioteki standardowej: biblioteka standardowa dodała obsługę formatowania wskaźników P2510R3, co przybliża zestaw specyfikatorów formatu dla wskaźników do tych, które już istnieją dla liczb całkowitych przy użyciu std::format. Ulepszono wektoryzowane implementacje elementów std::min_element, std::ranges::min i pokrewnych.
  • Szczegółowe informacje o kompilacji: teraz udostępnia informacje o tworzeniu wystąpienia szablonu. Zobacz Widok szablonów dla Build Insights w programie Visual Studio lub nagranie Pure Virtual C++ - Widok szablonów dla Build Insights w programie Visual Studio.
  • Wtyczka Unreal Engine: istnieje nowa funkcja umożliwiająca uruchomienie wtyczki Unreal Engine w tle, co zmniejsza koszty uruchamiania. Jest to funkcja, którą można włączyć za pomocą Narzędzia>Opcje>Unreal Engine.
  • Nowe funkcje dla systemu Linux: zobacz Nowe funkcje programistyczne systemu Linux w programie Visual Studio.
  • Obiekty docelowe CMake: można teraz przypiąć obiekty docelowe w widoku obiektów docelowych CMake.
  • UX Menedżera Połączeń: Doświadczenie użytkownika zapewnia bardziej płynne działania podczas nawiązywania połączenia z systemami zdalnymi. Aby uzyskać więcej informacji, zobacz Ulepszenia użyteczności w programie Visual Studio Menedżer połączeń.
  • Komentarze do pull request: możesz teraz wyświetlać komentarze usług GitHub i Azure DevOps bezpośrednio w pliku roboczym. Włącz flagę funkcji Komentarze żądania ściągnięcia w Opcje>Środowisko>Podgląd funkcji i wyewidencjonuj gałąź żądania ściągnięcia, aby rozpocząć pracę.
  • Zawartość wygenerowana przez sztuczną inteligencję: Narzędzie GitHub Copilot może teraz tworzyć wersje robocze opisów próśb ściągnięcia. Wymaga aktywnej subskrypcji narzędzia GitHub Copilot. Wypróbuj, klikając ikonę Dodaj opis żądania ściągnięcia wygenerowany przez AI z ikoną pióra w oknie Tworzenia żądania ściągnięcia.
  • Podgląd obrazu: umieść kursor nad ścieżką obrazu, aby wyświetlić podgląd ze szczegółami rozmiaru. Rozmiar jest ograniczony do 500 pikseli szerokości i wysokości.

    Zrzut ekranu przedstawiający podgląd aktywowania wskaźnika myszy.

    Wskaźnik myszy znajduje się na linii std::filesystem::path vs_logo_path = "../images/vs_logo.png". Poniżej pojawi się podgląd logo programu Visual Studio oraz informacje o rozmiarze 251 x 500 pikseli i 13,65 KB.

  • Tworzenie punktu przerwania/punktu śledzenia: teraz można tworzyć warunkowe punkty przerwania lub punkty śledzenia bezpośrednio z wyrażeń w kodzie źródłowym z menu prawym przyciskiem myszy. Działa to na nazwach właściwości lub polach i wartościach z autos, ustawień lokalnych, okien kontrolnych lub etykietek danych.
  • Okno dialogowe Dołącz do procesu: Funkcjonalność okna dialogowego Dołącz do procesu jest bardziej przyjazna dla użytkownika. Teraz można łatwo przełączać się między widokiem drzewa i widokiem listy, lepiej organizować procesy za pomocą zwijanych sekcji oraz wybierać typy kodu z uproszczonym polem rozwijanym. Ponadto funkcja "Wybieranie/śledzenie okna" jest teraz łatwiejsza w użyciu, umożliwiając śledzenie dwukierunkowe: wybranie procesu wyróżnia jego okno, a kliknięcie okna powoduje wybór jego procesu.
  • Integracja z rozwiązaniem GitHub Copilot: rozszerzenia GitHub Copilot i Copilot Chat są teraz ujednolicone i teraz dostarczane bezpośrednio w programie Visual Studio. Aby go zainstalować, zainstaluj składnik GitHub Copilot w Instalator programu Visual Studio:

    Zrzut ekranu przedstawiający opcję instalacji GitHub Copilot w Instalatorze programu Visual Studio.

    Interfejs GitHub Copilot znajduje się w prawym górnym rogu programu Visual Studio. Aby go używać, potrzebujesz aktywnej subskrypcji usługi GitHub Copilot.

    Zrzut ekranu przedstawiający przycisk GitHub Copilot.

    Przycisk GitHub Copilot jest wyświetlany w prawym górnym rogu programu Visual Studio. Dostępne są opcje otwierania okna czatu, ustawienia GitHub Copilot, dowiedz się więcej i zarządzania subskrypcją Copilot.

Co nowego w języku C++ w programie Visual Studio w wersji 17.9

Wydany w lutym 2024 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.9
Funkcje scalone w bibliotece standardowej C++23 (STL), poprawiona wydajność, cechy ulepszonego zachowania, rozwiązania problemów Grupy Roboczej Języka (LWG) oraz usunięte błędy. Dziennik zmian STL 17.9
Nowe funkcje w środowisku IDE programu Visual Studio 17.9 Informacje o wersji 17.9 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.9 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022
Podsumowanie aktualizacji zaplecza języka C++ Aktualizacje zaplecza MSVC od wersji 17.3 programu Visual Studio 2022

Częściowa lista nowych funkcji:

  • #include diagnostyka, która umożliwia szczegółową analizę #include dyrektyw. Aktywuj tę funkcję, klikając prawym przyciskiem myszy na #include i wybierając #include directives>, a następnie Włącz diagnostykę dyrektyw #include. Nad każdym #include znajduje się liczba razy, ile razy twój kod odwołuje się do tego pliku #include. Kliknij link odwołania, aby przejść do miejsca, gdzie Twój kod używa czegoś z tego pliku nagłówkowego. Aby wyświetlić czas kompilacji #include dyrektyw, uruchom Build Insights, przechodząc do Kompilacja>Uruchom Build Insights dla rozwiązania>Kompilacja.

    Zrzut ekranu przedstawiający diagnostykę #include.

    Powyżej pliku #include znajduje się link referencyjny oraz wiele odwołań do tego pliku include (w tym przypadku 1). Czas kompilacji jest również wymieniony (w tym przypadku mniej niż 1/2 sekundy).

  • Wizualizacja układu pamięci przedstawiająca sposób rozmieszczania pamięci dla klas, struktur i związków. Najedź kursorem na typ i wybierz link Układ pamięci w Szybkie informacje, aby otworzyć dedykowane okno wyświetlające układ pamięci wybranego typu. Najechanie kursorem na poszczególne typy danych w tym oknie dostarcza szczegółowych informacji o ich rozmiarze i przesunięciu w obrębie danego typu.

    Zrzut ekranu przedstawiający okno układu pamięci

    W oknie układu pamięci jest wyświetlana zawartość klasy Snake. Przedstawia przesunięcia pamięci różnych pól klasy, takich jak klasy Point dla lokalizacji głowy i ciała, punktacji itd.

  • Teraz możesz określić własny plik wykonywalny narzędzia CMake. Ta funkcja jest przydatna, jeśli chcesz użyć określonej wersji narzędzia CMake, która nie jest dostarczana z programem Visual Studio. Przejdź do Narzędzia>Opcje i wybierz CMake>Ogólne. Wybierz pozycję Włącz niestandardowy plik wykonywalny narzędzia CMake i określ ścieżkę katalogu pliku wykonywalnego narzędzia CMake.

    Zrzut ekranu przedstawiający okno dialogowe opcji narzędzia CMake

    Okno dialogowe opcji CMake z wyróżnioną opcją "Włącz niestandardowy plik wykonywalny CMake" i pole "Katalog dla plików wykonywalnych CMake".

  • Ulepszone IntelliSense dla projektów Unreal Engine.
  • Ulepszona obsługa języka C++23: std::format i std::spanformattable, range_format, format_kind, oraz set_debug_format() w ramach P2286R8 Formatowanie zakresów<mdspan> zgodnie z P0009R18 i kolejnymi zmianami w sformułowaniach, które zostały wprowadzone do standardu C++23. Ponadto, format() można formatować wskaźniki za pomocą P2510R3.

Co nowego w języku C++ w programie Visual Studio w wersji 17.8

Wydany w listopadzie 2023 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.8
Biblioteka Standardowa (STL) scaliła funkcje języka C++26, C++23, rozszerzenia C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy Dziennik zmian STL 17.8
Nowe funkcje w środowisku IDE programu Visual Studio 17.8 Informacje o wersji 17.8 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.8 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022
Omówienie ulepszeń języka C++ w programach Visual Studio, VS Code i vcpkg w 2023 r. Rok ulepszeń języka C++

Częściowa lista nowych funkcji:

  • Ustrukturyzowana diagnostyka błędów języka C++ w oknie danych wyjściowych oraz nowe okno szczegółów problemu, które zawiera więcej informacji o błędzie. Aby uzyskać więcej informacji, zobacz Ustrukturyzowane dane wyjściowe SARIF i okno szczegóły problemu.
  • Funkcja, która umożliwia wizualizowanie rozmiaru i wyrównania klas, struktur, unii, typów bazowych lub wyliczeń jeszcze przed skompilowaniem kodu. Najedź wskaźnikiem myszy na identyfikator, aby wyświetlić informacje o rozmiarze i wyrównaniu.
  • Funkcja sugerująca, kiedy oznaczyć funkcje członkowskie const, ponieważ nie modyfikują stanu obiektu. Najedź na funkcję składową i kliknij ikonę żarówki, aby oznaczyć funkcję jako const.
  • Program Visual Studio wyświetla teraz monit o oznaczenie funkcji globalnych jako statycznych za pomocą ikony śrubokręta wyświetlanej według nazwy funkcji. Kliknij ikonę śrubokręta, aby oznaczyć funkcję jako statyczną.
  • Nieużywane dyrektywy #include są wygaszone w edytorze. Możesz umieścić wskaźnik myszy na wygaszonym dołączeniu i użyć menu żarówki, aby usunąć to dołączenie lub wszystkie nieużywane dołączenia. Można również dodawać #include dyrektywy dla jednostek, które są pośrednio dołączane za pośrednictwem innych nagłówków. Aby uzyskać więcej informacji, zobacz Czyszczenie C/C++ w programie Visual Studio.
  • Więcej obsługi Unreal Engine
  • Zdalna obsługa testów jednostkowych systemu Linux teraz umożliwia uruchamianie testów CTest i GTest na zdalnych maszynach z systemem Linux z Eksploratora testów w programie Visual Studio, podobnie jak testy lokalne.

Co nowego w języku C++ w programie Visual Studio w wersji 17.7

Wydany w sierpniu 2023 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.7
Nowe funkcje języka C++ specyficzne dla tworzenia gier Uwolnienie możliwości tworzenia gier w programie Visual Studio 2022 dla języka C++
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.7
Nowe funkcje w środowisku IDE programu Visual Studio 17.7 Informacje o wersji 17.7 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.7 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji:

  • Szybsze sesje debugowania i szybsze ładowanie projektów
  • Szczegółowe wizualizacje rozszerzania makr
  • Jednoklikowe pobieranie Podsystemu Windows dla systemu Linux (WSL)
  • Ulepszona obsługa komentarzy Doxygen
  • Analiza kompilacji języka C++ na potrzeby tworzenia gier
  • Dodano /std:clatest dla kompilatora języka C.
  • Ulepszenia projektu Unreal Engine, takie jak szybsza funkcja IntelliSense i kolorowanie składni, możliwość znajdowania wszystkich odwołań do Blueprints Unreal Engine i nie tylko.

Co nowego w języku C++ w programie Visual Studio w wersji 17.6

Wydany w maju 2023 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.6
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.6
Nowe funkcje w środowisku IDE programu Visual Studio 17.6 Informacje o wersji 17.6 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.6 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji obejmuje:

  • Debugowanie skryptu narzędzia CMake
  • Wbudowana obsługa języka cieniowania wysokiego poziomu (HLSL)
  • Przeglądarka dziennika Unreal Engine
  • VCPKG jest teraz domyślnie dodawany
  • Początkowa obsługa języka C++20 w projektach C++/CLI oraz niektóre standardowe funkcje bibliotek języka C++23 dla zakresów.

Co nowego w języku C++ w programie Visual Studio w wersji 17.5

Wydany w lutym 2023 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.5
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.5
Nowe funkcje w środowisku IDE programu Visual Studio 17.5 Informacje o wersji 17.5 programu Visual Studio 2022

Częściowa lista nowych funkcji obejmuje:

  • std::move, std::forward, std::move_if_noexcept i std::forward_like teraz nie generują wywołań funkcji w wygenerowanym kodzie, nawet w trybie debugowania. Ta zmiana pozwala uniknąć rzutów nazwanych, co powoduje niepotrzebne obciążenie w kompilacjach debugowania. /permissive- (lub opcja, która implikuje to, na przykład /std:c++20 lub std:c++latest) jest wymagana.

  • Dodano [[msvc::intrinsic]]. Ten atrybut można zastosować do funkcji nierekursywnych składających się z pojedynczego rzutowania, które przyjmują tylko jeden parametr.

  • Dodano obsługę konsoli systemu Linux w zintegrowanym terminalu, co umożliwia we/wy terminalu.

  • Dodano początkową obsługę eksperymentalną dla niepodzielnych elementów pierwotnych C11 (<stdatomic.h>). Możesz włączyć tę funkcję eksperymentalną za pomocą opcji /experimental:c11atomics w trybie /std:c11 lub późniejszym.

  • Dodano nowy zestaw eksperymentalnych kontroli o wysokim poziomie pewności do narzędzia do sprawdzania długości życia obiektu w celu zredukowania hałasu.

  • Nowa funkcja w wersji zapoznawczej, Remote Eksplorator Plików, umożliwia wyświetlanie katalogu plików na maszynach zdalnych w programie VS oraz wysyłanie i pobieranie do niego plików.

  • Zmieniono wersjonowanie plików wykonywalnych CMake dostarczanych z programem Visual Studio, aby pasowały do wersji Kitware.

  • Dodano obsługę Hot Reload do szablonu projektu CMake.

  • Przejdź do definicji w C++ teraz używa bardziej subtelnego wskaźnika operacyjnego czasu, zastępując modalne okno dialogowe w poprzednich wersjach.

  • Rozpoczęto wdrażanie eksperymentu dostarczającego bardziej inteligentne wyniki w autouzupełnianiu i na liście składowych języka C++. Ta funkcja była wcześniej znana jako Predykcyjna funkcja IntelliSense, ale teraz używa nowej metody prezentacji.

  • Teraz dostarczamy natywny zestaw narzędzi Clang arm64 z obciążeniem LLVM, umożliwiając natywną kompilację na maszynach Arm64.

  • Dodano lokalizację do rozszerzenia Image Watch (to rozszerzenie jest dostępne w Marketplace i nie jest dołączone do Instalatora programu Visual Studio).

  • Dodano obsługę otwierania okna terminalu do aktualnie uruchomionego kontenera deweloperów.

  • Wprowadzono kilka ulepszeń rozszerzenia makr IntelliSense. W szczególności włączyliśmy rekurencyjne rozszerzanie w większej liczbie kontekstów i dodaliśmy opcje w wyskakującym oknie, aby skopiować rozszerzenie do schowka lub rozszerzyć makro bezpośrednio.

  • Monitorowanie współbieżne jest teraz obsługiwane w monitorze szeregowym. Monitorowanie współbieżne umożliwia monitorowanie wielu portów jednocześnie jednocześnie. Naciśnij przycisk plus, aby otworzyć inny monitor szeregowy i rozpocząć pracę.

  • Teraz można wyświetlać właściwości z klas bazowych zmodyfikowanych w zasobie Unreal Blueprint bez opuszczania programu Visual Studio. Kliknij dwukrotnie odwołanie do strategii dla klasy lub właściwości języka C++, aby otworzyć inspektora zasobów UE w programie Visual Studio.

  • Włączono uruchamianie aplikacji DevContainers na zdalnej maszynie z systemem Linux.

  • Włączono wybór wielu celów do skompilowania w widoku celów CMake.

  • Dodano obsługę CMakePresets.json w wersji 5. Aby uzyskać informacje o nowych funkcjach, zobacz dokumentację narzędzia CMake.

  • Włączono Eksploratora testów w celu równoległego kompilowania i testowania wielu obiektów docelowych narzędzia CMake.

  • Dodano opcję "Otwórz kontener w terminalu" do kontenerów deweloperskich.

  • Zaimplementowano standardowe funkcje biblioteki:

    • basic_format_stringP2508R1format_stringwformat_string
    • P2322R6ranges::fold_left, ranges::fold_righti tak dalej.
    • P2321R2views::zip (nie obejmuje zip_transform, adjacent, i adjacent_transform)

Co nowego w języku C++ w programie Visual Studio w wersji 17.4

Wydany w listopadzie 2022 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.4
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.4
Nowe funkcje w środowisku IDE programu Visual Studio 17.4 Informacje o wersji 17.4 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.4 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji w wersji 17.4:

  • Ulepszone komunikaty o błędach kompilatora w celu zapewnienia bardziej poprawnych i przydatnych informacji, zwłaszcza w przypadku pojęć.

  • Dodano eksperymentalną opcję /experimental:log<directory> MSVC, aby wyprowadzić ustrukturyzowaną diagnostykę SARIF do określonego katalogu.

  • Dodano obsługę atrybutów C23 do funkcji IntelliSense oraz postępy we wsparciu dla modułów C++20.

  • Zwiększona wydajność indeksowania podczas otwierania nowego rozwiązania. Duże projekty mogą odnotować poprawę o 20-35% w stosunku do 17,3.

  • Ulepszona optymalizacja nazwanych wartości zwracanych (NRVO):

    • Funkcja NRVO jest włączona w przypadku przypadków obejmujących obsługę wyjątków lub pętle.
    • Funkcja NRVO jest włączona nawet pod /Od, jeśli użytkownik przekaże opcję /Zc:nrvo, lub /std:c++20 lub nowszą, lub /permissive-.
    • Teraz możesz wyłączyć funkcję NRVO przy użyciu opcji /Zc:nrvo-.
  • Uaktualniono wersję maszyny LLVM dostarczanej z programem Visual Studio do wersji 15.0.1. Aby uzyskać więcej informacji na temat dostępnych funkcji, zobacz informacje o wydaniu LLVM i Clang.

  • Dodano obsługę artefaktów vcpkg w projektach CMake w programie Visual Studio. W przypadku projektów zawierających manifest vcpkg środowisko jest aktywowane automatycznie podczas otwierania projektu. Dowiedz się więcej o tej funkcji w wpisie w blogu dotyczącym aktywacji środowiska vcpkg w programie Visual Studio .

  • Teraz możesz używać usługi Dev Containers dla projektów języka C++. Dowiedz się więcej o tej funkcji w naszym wpisie w blogu Dev Containers for C++ .

  • Funkcja IntelliSense uwzględnia teraz kolejność preincludowanych nagłówków, gdy jeden z nich jest PCH. Wcześniej, gdy PCH był używany za pośrednictwem /Yu i wymuszony za pośrednictwem /FI, IntelliSense zawsze przetwarzała go jako pierwszy, przed wszystkimi innymi nagłówkami zawartymi za pośrednictwem /FI. To zachowanie nie było zgodne z działaniem wersji kompilacyjnej. Dzięki tej zmianie /FI nagłówki są przetwarzane w podanej kolejności.

  • Usunięto wewnętrzne prefiksy z nazw CTest w Eksploratorze testów.

  • Zaktualizowano wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.24.1. Aby uzyskać szczegółowe informacje na temat tego, co jest dostępne, zobacz uwagi do wydania narzędzia CMake.

  • Aktualizacja zestawu SDK systemu Android:

    • Skrypty Ant zostały usunięte, więc użytkownicy nie zobaczą już szablonów opartych na antach w oknie dialogowym Nowy projekt. Aby uzyskać pomoc dotyczącą migracji z szablonów Ant do szablonów narzędzia Gradle, zobacz Migrowanie kompilacji z platformy Apache Ant
    • Dodano obsługę kompilowania przy użyciu zestawów NDK 23 i 24
    • Zaktualizowano składnik NDK do wersji 23 LTS
  • Dodano wektoryzowane implementacje ranges::min_element(), ranges::max_element() i ranges::minmax_element()

  • Kontynuujemy śledzenie najnowszych zmian w standaryzacji języka C++. Obsługa tych funkcji języka C++23 jest dostępna poprzez dodanie /std:c++latest do opcji kompilatora.

    • ranges::containsP2302R4,ranges::contains_subrange

    • string_view Konstruktor zakresu P2499R0 powinien byćexplicit

    • auto(x)P0849R8 : rozkład kopii w języku

      (Część kompilatora nie jest jeszcze zaimplementowana. Część biblioteki została zaimplementowana w trybie C++20, gdy obsługa zakresów została początkowo zaimplementowana).

    • P0881R7 <stacktrace>

    • P2301R1, dodaj pmr alias dla std::stacktrace

    • P1328R1 constexpr type_info::operator==()

    • P2440R1ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::join_with

  • Dodano opcję "Nawigacja po utworzeniu deklaracji/definicji", aby umożliwić wybranie zachowania nawigacji funkcji Utwórz deklarację/definicję. Możesz wybrać między podglądem (ustawieniem domyślnym) lub otwarciem dokumentu albo bez nawigacji.

  • Kompilacje Arm64 programu Visual Studio zawierają teraz wersje Arm64 narzędzi CMake i Ninja.

  • Dodano obsługę presetów CMake w wersji 4. Aby uzyskać szczegółowe informacje na temat tego, co jest dostępne, zobacz uwagi do wydania narzędzia CMake.

  • Połączenia z systemem zdalnym przy użyciu Menedżer połączeń obsługują teraz protokół SSH ProxyJump. Serwer ProxyJump służy do uzyskiwania dostępu do hosta SSH za pośrednictwem innego hosta SSH (na przykład w celu uzyskania dostępu do hosta za zaporą).

Co nowego w języku C++ w programie Visual Studio w wersji 17.3

Wydany w sierpniu 2022 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Ulepszenia języka C++ w wersji 17.3
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.3
Nowe funkcje w środowisku IDE programu Visual Studio 17.3 Informacje o wersji 17.3 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.3 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji w wersji 17.3:

  • Łańcuch narzędzi Arm64EC nie jest już oznaczony jako eksperymentalny i jest gotowy do użycia w środowisku produkcyjnym.
  • Terminal programu Visual Studio może być teraz używany jako klient SSH z przechowywanymi połączeniami SSH. Po zainstalowaniu programu C++ for Linux Tools otwórz okno narzędzia terminalu. Lista rozwijana Terminal zostanie wypełniona zapisanymi połączeniami. Po wybraniu połączenia zostanie otwarte nowe okno terminalu w programie Visual Studio, które pokazuje pseudo-terminal w systemie zdalnym. Obsługiwane są znaki sterujące, kolory i rozpoznawanie położenia kursora.
  • Program Visual Studio może teraz dodawać szablony klas Unreal Engine dla projektów UE. Aby wypróbować tę funkcję, upewnij się, że w Instalatorze programu Visual Studio w obciążeniu Programowanie gier w języku C++ wybrano obsługę środowiska IDE dla Unreal Engine. Podczas pracy nad projektem UE kliknij prawym przyciskiem myszy wewnątrz projektu lub folderu/filtru i wybierz polecenie Dodaj>klasę UE.
  • Przejdź do definicji teraz zapamiętuje poprzednią sygnaturę i nawiguje odpowiednio, gdy lepsze dopasowanie jest niedostępne (na przykład po ręcznej zmianie sygnatury jednego z elementów). Reaktywność funkcji Przejdź do wszystkich została ulepszona. Wcześniej wyniki pojawiły się po zatrzymaniu wpisywania. W nowym środowisku wyniki są wyświetlane podczas wpisywania.
  • W kontekstach wymagających ukończenia typu enum (na przykład przypisania do zmiennych enum, etykiet przypadków, zwracania typów enum itd.) lista autouzupełniania jest teraz filtrowana tylko do pasujących wyliczeń i powiązanych konstrukcji.
  • Dodano obsługę funkcji NuGet PackageReference dla projektów C++/CLI MSBuild przeznaczonych dla platformy .NET Core. Ta zmiana została wprowadzona w celu odblokowania mieszanych baz kodu z możliwości wdrożenia platformy .NET Core. Ta obsługa nie działa w przypadku innych typów projektów C++ ani żadnych typów projektów C++ przeznaczonych dla platformy .NET Framework. Nie ma planów rozszerzenia obsługi funkcji PackageReference na inne scenariusze języka C++. Zespół pracuje nad oddzielnymi rozwiązaniami w kontekście narzędzia vcpkg dla scenariuszy innych niż MSBuild, aby dodać dodatkową funkcjonalność.
  • Dodano okno Monitora szeregowego do programowania osadzonego, dostępne przez Debugowanie>Windows>Monitor szeregowy.
  • Ulepszono indeksowanie języka C++ o ok. 66% w porównaniu z 17,2.
  • Zaktualizowano wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.23. Aby uzyskać szczegółowe informacje o dostępności, zobacz informacje o wersji narzędzia CMake 3.23.
  • Uaktualniono wersje narzędzi LLVM dostarczanych z programem Visual Studio do wersji 14. Aby uzyskać szczegółowe informacje o dostępnych funkcjach, zobacz uwagi do wydania LLVM i uwagi do wydania Clang.
  • Zaktualizowano równoległy zestaw narzędzi Dev 16.11 C++ do wersji 14.29.30145.00. Najnowsza wersja zestawu narzędzi Dev 16.11 C++ zawiera ważne poprawki błędów, w tym naprawianie wszystkich pozostałych raportów błędów C++20. Aby uzyskać więcej informacji na temat poprawek błędów, w tym raportów o błędach języka C++20 w programie Dev 16.11, zobacz Informacje o wersji programu Visual Studio 2019 w wersji 16.11.14.
  • Wprowadzono różne ulepszenia dotyczące pracy z modułami C++ w edytorze. Nieustannie pracujemy nad poprawą jakości doświadczenia, ale zachęcamy do wypróbowania funkcjonalności w wersji 17.3. Zgłoś pozostałe problemy za pośrednictwem społeczności deweloperów.

Co nowego w języku C++ w programie Visual Studio w wersji 17.2

Wydany w maju 2022 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Program Visual Studio 2022 17.2 jest teraz dostępny
Biblioteka standardowa (STL) zintegrowała raporty dotyczące usterek C++20, funkcje C++23, rozwiązania problemów Grupy Roboczej ds. Języka (LWG), ulepszenia wydajności, poprawione zachowanie oraz naprawione błędy. Dziennik zmian STL 17.2
Nowe funkcje w środowisku IDE programu Visual Studio 17.2 Informacje o wersji 17.2 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.2 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji w wersji 17.2:

  • Dodano obsługę kompilatora dla funkcji deducing thisjęzyka C++23 dostępnej w /std:c++latest ramach opcji .
  • Dodano obsługę funkcji IntelliSense dla funkcji deducing this języka C++23 i if consteval.
  • Dodano obsługę wbudowanych nazw parametrów i wskazówek typów, które można przełączać, naciskając Alt+F1 lub dwukrotnie naciskając Ctrl. To zachowanie można dostosować w obszarze Narzędzia > Opcje > Edytory > tekstów C/C++ > IntelliSense.
  • Dodano obsługę eksperymentalną modułów języka C++20 w projektach CMake. Ta obsługa jest obecnie dostępna tylko w generatorze programu Visual Studio (MSBuild).
  • W wersji 17.1 wprowadziliśmy widoki rejestrów urządzeń peryferyjnych i RTOS dla programistów systemów wbudowanych. Nadal ulepszamy możliwości tych widoków dzięki ulepszeniom użyteczności w wersji 17.2:
    • Okno narzędzia RTOS jest teraz domyślnie ukryte. Zapobiega to wyświetlaniu okna narzędzi z komunikatami o błędach, które nie są istotne, gdy nie używasz systemu RTOS.
    • Po dwukrotnym kliknięciu obiektu RTOS w oknie narzędzia zostanie dodany zegarek dla obiektu.
    • Po wybraniu wartości początkowych i końcowych wskaźnika stosu w oknie narzędzia RTOS zostanie on otwarty w oknie pamięci.
    • Dodano rozpoznawanie wątków dla obiektów docelowych urządzeń w oknie stosu wywołań.
    • Użytkownicy mogą teraz wybrać ikonę pinezki obok urządzeń peryferyjnych, rejestrów lub pól, aby przypiąć je w górnej części widoku peryferyjnego.
  • Dodano implementacje pozostałych raportów wad języka C++20 (nazywanych również backportami). Wszystkie funkcje języka C++20 są teraz dostępne pod opcją /std:c++20. Aby uzyskać więcej informacji na temat wdrożonych backportów, zobacz vs 2022 Changelog w repozytorium Microsoft/STL GitHub oraz wpis w blogu STL /std:c++20STL STL MSVC.
  • Dodaliśmy różne funkcje biblioteki języka C++23 dostępne w opcji /std:c++latest. Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian STL Repo.
  • Ulepszono wydajność początkowego indeksowania w C++ nawet o 20%, w zależności od głębokości grafu zależności.

Co nowego w języku C++ w programie Visual Studio w wersji 17.1

Wydany w lutym 2022 r.

Aby uzyskać więcej informacji o Zobacz
Co nowego dla deweloperów języka C++ Program Visual Studio 2022 17.1 jest teraz dostępny!
Funkcje C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność i naprawione błędy Dziennik zmian STL 17.1
Nowe funkcje w środowisku IDE programu Visual Studio 17.1 Informacje o wersji 17.1 programu Visual Studio 2022
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.1 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022

Częściowa lista nowych funkcji w wersji 17.1:

  • Dodano nowy szablon Konfigurowanie ustawień wstępnych do konfigurowania i kompilowania projektów CMake w zdalnym systemie macOS za pomocą polecenia CMakePresets.json. Można również uruchomić obiekty docelowe narzędzia CMake w zdalnym systemie macOS, a następnie debugować zdalnie w debugerze programu Visual Studio wspieranym przez usługę GDB lub LLDB.
  • Teraz można debugować zrzuty pamięci na zdalnym systemie macOS za pomocą programu Visual Studio oraz narzędzi LLDB lub GDB.
  • Wersje Clang i LLVM dostarczane z Visual Studio są uaktualniane do wersji 13.
  • Integracja z CMake w Visual Studio jest aktywna tylko wtedy, gdy element CMakeLists.txt jest rozpoznawany w katalogu głównym otwartego obszaru roboczego. Jeśli element CMakeLists.txt zostanie zidentyfikowany na innym poziomie obszaru roboczego, zostaniesz poproszony o aktywowanie integracji CMake z Visual Studio za pomocą powiadomienia.
  • Nowe widoki, które umożliwiają inspekcję i interakcję z rejestrami peryferyjnymi na mikrokontrolerach oraz obiektami systemów operacyjnych czasu rzeczywistego (RTOS), dostępne poprzez Debug>Windows>Embedded Registers.
  • Dodano nowy widok wątków dla projektów RTOS, dostępny za pośrednictwem Debug i Windows oraz RTOS Objects. Aby uzyskać więcej informacji, zobacz Embedded Software Development in Visual Studio (Tworzenie oprogramowania osadzonego w programie Visual Studio).

Co nowego w języku C++ w programie Visual Studio w wersji 17.0

Wydany w listopadzie 2021 r.

Aby uzyskać więcej informacji o Zobacz
Nowe funkcje w środowisku IDE programu Visual Studio 17.0 Informacje o wersji 17.0 programu Visual Studio 2022
Funkcje biblioteki standardowej (STL) scalone z cechami C++23 i C++26, raporty z defektami C++20, rozwiązania kwestii zgłaszanych przez Language Working Group (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy Dziennik zmian STL 17.0
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.0 Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.10

Omówienie niektórych nowych funkcji w programie Visual Studio 2022 w wersji 17.0:

  • Środowisko IDE programu Visual Studio, devenv.exe, jest teraz natywną aplikacją 64-bitową.
  • Zestaw narzędzi MSVC domyślnie używa skrótu SHA-256 dla źródła w rekordach debugowania. Wcześniej zestaw narzędzi domyślnie używał rozwiązania MD5 do tworzenia skrótów źródłowych.
  • Narzędzia kompilacji w wersji 143 są teraz dostępne za pośrednictwem instalatora programu Visual Studio i w samodzielnych narzędziach kompilacji .

Dynamiczne przeładowywanie dla natywnego C++

  • Hot Reload dla C++ umożliwia wprowadzanie wielu rodzajów poprawek w kodzie działającej aplikacji i ich zastosowanie bez potrzeby przerywania jej działania za pomocą punktu przerwania.

W programie Visual Studio 2022 po uruchomieniu aplikacji w debugerze możesz użyć przycisku Przeładowywanie na gorąco, aby zmodyfikować aplikację, gdy jest ona nadal uruchomiona. To doświadczenie jest obsługiwane przez funkcję Edytuj i kontynuuj. Aby uzyskać więcej informacji na temat obsługiwanych edycji, zobacz Edytowanie i kontynuowanie (C++).

  • Przeładowywanie na gorąco obsługuje projekty CMake i Open Folder.

Obsługa protokołu WSL2

  • Teraz można kompilować i debugować natywnie w systemie WSL2 bez ustanawiania połączenia SSH. Obsługiwane są zarówno międzyplatformowe projekty CMake, jak i projekty systemu Linux oparte na programie MSBuild.

Ulepszona obsługa narzędzia CMake

  • Uaktualniono wersję narzędzia CMake dostarczoną z programem Visual Studio do wersji 3.21. Aby uzyskać więcej informacji na temat dostępnych funkcji w tej wersji, zobacz notatki o wersji narzędzia CMake 3.21.

  • Strony przeglądu narzędzia CMake są aktualizowane w celu obsługi programu CMakePresets.json.

  • Teraz można konfigurować i kompilować projekty CMake za pomocą narzędzia CMake 3.21 i CMakePresets.json v3.

  • Teraz Visual Studio obsługuje opcję buildPresets.targets w CMakePresets.json. Ta opcja umożliwia utworzenie podzestawu obiektów docelowych w projekcie CMake.

  • Menu Project w projektach CMake jest usprawnione i uwidacznia opcje "Usuń pamięć podręczną i ponownie skonfiguruj" i "Wyświetl pamięć podręczną".

  • Zaimplementowano opcję kompilatora /scanDependencies , aby wyświetlić listę zależności modułów języka C++20 dla projektów CMake zgodnie z opisem w P1689R5. Jest to krok w kierunku obsługi tworzenia projektów opartych na modułach za pomocą narzędzia CMake i pracujemy nad ukończeniem tej obsługi w kolejnych wersjach.

Ulepszenia biblioteki standardowej

Wybrane ulepszenia biblioteki standardowej (STL) wyróżniono tutaj. Aby uzyskać kompleksową listę nowych funkcji, zmian, poprawek błędów i ulepszeń wydajności, zobacz dziennik zmian zespołu STL.

  • Dodano wizualizatory debugowania w celu poprawienia sposobu wyświetlania następujących typów: source_location, bind_front(), u8string (i ich iteratorów), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (i jego iteratora/strażnika), ranges::ref_view, thread, thread::id, jthread i filesystem::path.
  • Dodano [[nodiscard]] do rodziny funkcji w stoi() oraz do różnych funkcji w <string>, takich jak funkcje składowe <locale>, collate, oraz rodziny has_facet() i isalnum()tolower().
  • P0980R1 wykonane std::stringconstexpr w programie VS 2019 16.10. Teraz obsługiwane w języku Clang.
  • P1004R2 wykonane std::vectorconstexpr w programie VS 2019 16.10. Teraz obsługiwane w języku Clang.

Wyróżnione funkcje języka C++23

  • P1048R1 Dodano is_scoped_enumnową właściwość standardowej biblioteki C++, która wykrywa, czy typ jest wyliczeniem o określonym zakresie.
  • out_ptr()P1132R7 ,inout_ptr()
  • P1679R3contains() dla basic_string i basic_string_view
  • to_underlying() P1682R3 dla wyliczeń
  • P2162R2 Zezwalaj na dziedziczenie z std::variant
  • P2166R1 Zakaz konstruowania i basic_string z basic_string_view. Ta zmiana jest zmianą powodującą niezgodność źródła. Kod, który wcześniej miał niezdefiniowane zachowanie w czasie wykonywania, jest teraz odrzucany z błędami kompilatora.
  • P2186R2 Usunięto obsługę odśmiecania pamięci. Ta zmiana usuwa declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Wcześniej te funkcje nie miały wpływu.

Wyróżnione ulepszenia wydajności

  • <format> teraz wykrywa, kiedy zapisuje do obiektu back_insert_iterator dla basic_string lub vector, i wykonuje szybsze wywołanie do insert() na end() kontenera.
  • Poprawiliśmy wydajność std::find() i std::count() dla vector<bool> 19-krotnie i 26-krotnie (razy, a nie procent).
  • Poprawiliśmy wydajność std::count() dla vector<bool>
  • std::byte ma taką samą wydajność jak unsigned char w reverse() i variant::swap()

Obsługa oprogramowania Clang i LLVM

  • Narzędzia LLVM dostarczane z programem Visual Studio zostały zaktualizowane do wersji LLVM 12. Aby uzyskać więcej informacji, zobacz notatki o wydaniu LLVM.

  • Obsługa Clang-cl została zaktualizowana do LLVM 12.

  • Teraz można debugować procesy uruchomione w systemie zdalnym z poziomu programu Visual Studio przy użyciu usługi LLDB.

C++ AMP uznane za przestarzałe

  • Nagłówki C++ AMP są teraz przestarzałe. Uwzględnienie <amp.h> w projekcie C++ generuje błędy kompilacji. Aby wyciszyć błędy, zdefiniuj wartość _SILENCE_AMP_DEPRECATION_WARNINGS. Aby uzyskać więcej informacji, zobacz nasze linki dotyczące wycofywania AMP.

Ulepszenia funkcji IntelliSense

  • Wprowadziliśmy ulepszenia w funkcjonalności IntelliSense dla języka C++ w zakresie nawigacji i wyróżniania składni dla typów z zaimportowanych modułów oraz jednostek nagłówkowych. IntelliSense to dla nas aktywny obszar inwestycji. Pomóż nam ulepszyć: podziel się swoją opinią na temat społeczności deweloperów, korzystając z pomocy >wyślij opinię.
  • Poprawiliśmy wydajność funkcji IntelliSense języka C++ poprzez optymalizację wykorzystania pamięci podręcznej nagłówków oraz dostępu do bazy danych symboli, co zapewnia lepsze czasy ładowania umożliwiające szybsze przystąpienie do pracy nad kodem.
  • Funkcja Linter kodu IntelliSense dla języka C++ jest teraz domyślnie włączona, zapewniając błyskawiczne sugestie podczas wpisywania oraz propozycje poprawek typowych błędów kodu.
  • Funkcja IntelliSense języka C++ dla projektów CMake działa teraz w przypadku używania ustawień wstępnych z nazwą wyświetlaną.

Aktualizacje obciążeń języka C++

  • Zaktualizowano do wersji NDK r21 LTS w obciążeniu C++ Mobile Development .
  • Obciążenie Tworzenie gier przy użyciu C++ instaluje teraz najnowszy Unreal Engine z obsługą Visual Studio 2022.

Ulepszenia analizy kodu

  • Analiza kodu teraz wymusza, że wartości zwracane przez funkcje z adnotacjami _Check_return_ lub _Must_inspect_result_ muszą być sprawdzane.
  • Wykrywanie dereferencji wskaźnika null zostało ulepszone w naszych narzędziach do analizy kodu.
  • Dodano obsługę analizy gsl::not_null kodu.
  • Obsługa biblioteki Libfuzzer w ramach opcji kompilatora /fsanitize=fuzzer .

Informacje o wydaniach dla starszych wersji

Dostępne są również informacje o wersji dla starszych wersji języka C++:

Znane problemy

C++ IntelliSense

Aby uzyskać więcej informacji na temat innych otwartych problemów i dostępnych obejść dla języka C++ w programie Visual Studio 2022, zobacz listę problemów społeczności deweloperów języka C++.

Opinie i sugestie

Z przyjemnością poznamy opinie użytkowników. Możesz zgłosić problem lub zasugerować funkcję, korzystając z ikony "Wyślij opinię" w prawym górnym rogu instalatora lub środowiska IDE programu Visual Studio albo wybierając Pomoc, a następnie Wyślij opinię. Problemy można śledzić przy użyciu społeczności deweloperów programu Visual Studio, w której można dodawać komentarze lub znajdować rozwiązania. Możesz też uzyskać bezpłatną pomoc dotyczącą instalacji za pośrednictwem naszej pomocy technicznej przez czat na żywo.

Blogi

Skorzystaj ze szczegółowych informacji i zaleceń dostępnych w witrynie Blogi dla deweloperów firmy Microsoft, aby być na bieżąco ze wszystkimi nowymi wersjami. Blogi zawierają szczegółowe wpisy dotyczące szerokiej gamy funkcji. Blog zespołu języka C++ i blog programu Visual Studio są szczególnie interesujące.