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.

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) zostały zintegrowane z funkcjami C++26 i C++23, rozwiązania problemów zgłoszonych przez LWG, poprawiona wydajność, działanie oraz naprawione błędy. Dziennik 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 numerycznego size_t w języku C++23, która pomaga uniknąć obcinania lub niezgodności przy porównywaniu wartości 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

    • Wsparcie dla korutyn w standardowej bibliotece. 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.

    • Funkcja uzupełniania kodu w GitHub Copilot udostępnia sugestie autouzupełniania bezpośrednio w kodzie podczas programowania. Aby ulepszyć środowisko deweloperów języka C++, narzędzie GitHub Copilot zawiera inne istotne pliki jako kontekst. Zmniejsza to halucynacje, 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 Git Changes jest otwarte z wyróżnionym przyciskiem GitHub Copilot Review.

      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(). Mówi, że może to być błąd i prawdopodobnie powinno być if (is_enabled_) new_site.enable(), ponieważ intencją wydaje się być włączenie nowej witryny, jeśli punkt przerwania jest aktywowany.

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

      • Narzędzia>Opcje>Funkcje podglądu>Komentarze żądania wysłania
      • 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 zaproponuje 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 iterowanie przez wiele plików wydajniej za pomocą Edycji GitHub Copilot.

  • CMake

    • Teraz obsługuje ustawienia wstępne narzędzia CMake w wersji 9. Nowe rozszerzenia makr w polu dołączania ustawień wstępnych. 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) połączone z funkcjami C++26 i C++23, rozwiązania problemów LWG, ulepszenia wydajności, ulepszone zachowanie 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 indeksu, które również obsługują <mdspan>. Na przykład: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Programowanie gier w języku C++
  • Informacje o budowaniu
    • Możesz uruchomić 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.
    • Kliknij ikonę znaku zapytania w oknie Build Insights, aby wyświetlić krótki opis kart oraz link do dokumentacji ze szczegółowymi wyjaśnieniami. Zrzut ekranu przedstawia okno Build Insights z wyróżnionym przyciskiem objaśnień widoku (znakiem 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. Zmienna o nazwie it ma wartość NULL. Ikona Zapytaj Copilot obok niego 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 mówi: "Wartość wyrażenia to NULL, co oznacza, że iterator nie wskazuje na żaden prawidłowy element w wektorze animals_." W kontekście programu należy iterować przez wektor o nazwie animals_ w obiekcie house, aby zliczyć liczbę obiektów typu cat. Dlaczego ma wartość null. Na podstawie kontekstu lokalnych zmiennych i stosu wywołań: obiekt domu h ma pusty wektor animals_ (rozmiar=0). Warunek pętli it <= h.animals_.end() jest niepoprawny. Powinien to być != 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 Zapytaj Copilot jest wyróżniona obok błędu, który unique_ptr próbuje odwołać 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 for oparta na zakresie próbowała skopiować obiekty std::unique_ptr, co jest niedozwolone, ponieważ nie można kopiować obiektów 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 referencjach 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 tekście: Zrzut ekranu przedstawiający etykietkę narzędzia z wartością 8.25. Jest to wynik wyrażenia po instrukcji return, która została pominięta.

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

    • Implementacja sformatowanego wyjścia teraz zawiera 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, takich jak replace_copy(), , replace_copy_if()ranges::replace_copyranges::replace_copy_iffind_first_of(), i ranges::find_first_of, dla elementów 8-bitowych i 16-bitowych, mismatch(), ranges::mismatchcount()ranges::countfind()ranges::findranges::find_lasti .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 silnika Unreal Engine w programie Visual Studio.
    • Nowy pasek narzędzi Unreal Engine zapewnia szybki dostęp do działań związanych z silnikiem Unreal Engine z poziomu programu Visual Studio. Pasek narzędzi umożliwia szybkie dołączanie do procesów Unreal Engine, ponowne skanowanie pamięci podręcznej Blueprintów, szybki dostęp do dziennika Unreal Engine oraz szybki dostęp do 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ędnione Pliki 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 CMakeLists.txt pliki w debugerze programu Visual Studio dla projektów CMake przeznaczonych dla systemu Linux przez Podsystem Windows dla systemu 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> i wybierz 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 Zmiana nazwy zawiera pole Nowa nazwa z listą rozwijaną, która pokazuje 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> elementu std::tuple , które 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, gdy std::ranges::to nie można 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 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 niektórych sposobów, w których dotyczy to projektów, które zakładają, że wersje MSVC to wszystkie wersje 19.3X dla programu Visual Studio 2022, zobacz MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10 (Zestaw narzędzi MSVC w wersji 14.40 w programie VS 2022 w wersji 17.10).
  • W ulepszeniach biblioteki standardowej: biblioteka standardowa dodała obsługę formatowania wskaźników P2510R3, co powoduje wprowadzenie zestawu specyfikatorów formatu dla wskaźników w przypadku używania std::format, który jest bardziej zgodny z tymi, które już istnieją dla liczb całkowitych. Ulepszono wektoryzowane implementacje elementów std::min_element, std::ranges::min i podobnych.
  • Analizy kompilacji: teraz udostępnia informacje o tworzeniu wystąpienia szablonu. Zobacz Widok szablonów dla szczegółowych informacji o kompilacji w programie Visual Studio lub nagranie Pure Virtual C++ - widok Szablonów dla funkcji 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. To funkcja „opt-in”, która jest aktywowana za pomocą Narzędzia>Opcje> w Unreal Engine.
  • Nowe funkcje dla systemu Linux: zobacz Nowe funkcje programistyczne systemu Linux w programie Visual Studio.
  • Obiekty docelowe narzędzia CMake: można teraz przypiąć elementy docelowe w widoku obiektów docelowych narzędzia CMake.
  • Menedżer połączeń UX: Doświadczenie użytkownika zapewnia bardziej płynne połączenie 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ów: Możesz teraz wyświetlać komentarze z GitHub i Azure DevOps bezpośrednio w pliku roboczym. Włącz flagę funkcji Komentarze żądania ściągnięcia w Opcje>Środowisko>Funkcje podglądu i przełącz na 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 pull requestów. Wymaga aktywnej subskrypcji narzędzia GitHub Copilot. Wypróbuj tę funkcję, klikając ikonę iskrzącego pióra Dodaj opis pull requestu wygenerowany przez AI w oknie Tworzenia pull requestu.
  • 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 podglądu podczas najechania kursorem.

    Mysz znajduje się nad linią 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łączanie do procesu: funkcjonalność udostępniana przez to okno dialogowe jest bardziej przyjazna dla użytkownika. Teraz można łatwo przełączać się między widokami drzewa i widokami listy, organizować procesy w bardziej uporządkowany sposób za pomocą sekcji z możliwością zwijania oraz wybierać typy kodu z uproszczonym polem wyboru. 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 na okno wybiera jego proces.
  • 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 narzędzia 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, ustawień narzędzia GitHub Copilot, więcej informacji 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
Biblioteka Standardowa (STL) zawiera funkcje C++23, ulepszenia wydajności, ulepszenie zachowania, rozwiązania problemów zgłaszanych przez LWG oraz naprawione 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 dostarcza szczegółowej analizy twoich #include poleceń. Aktywuj tę funkcję, klikając prawym przyciskiem myszy na #include i wybierając #include directives>, aby włączyć diagnostykę dyrektyw #include. Nad każdym #include znajduje się liczba odniesień do tego #include pliku. Kliknij link referencyjny , aby przejść do miejsca, gdzie kod używa elementu z tego pliku nagłówka. Aby wyświetlić czas kompilacji dyrektyw #include, uruchom Build Insights, przechodząc do Kompilacja>Uruchom Build Insights dla rozwiązania>Kompilowanie.

    Zrzut ekranu przedstawiający diagnostykę #include.

    Powyżej #include znajduje się odnośnik oraz wiele odniesień 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. Umieść kursor na typie i wybierz Układ pamięci w szybkich informacjach, aby otworzyć dedykowane okno pokazujące układ pamięci wybranego typu. Najechanie kursorem na poszczególne typy danych w tym oknie wyświetla szczegółowe informacje o ich rozmiarze i przesunięciu w ramach 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 klasa Point dla lokalizacji głowy i ciała, wyniku itp.

  • Teraz możesz określić własny niestandardowy plik wykonywalny 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 Włącz niestandardowy plik wykonywalny CMake i określ ścieżkę do swojego pliku wykonywalnego 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" oraz polem "Katalog pliku wykonywalnego CMake".

  • Ulepszona funkcja IntelliSense dla projektów silnika Unreal Engine.
  • Ulepszona obsługa języka C++23: std::format i std::spanformattable, range_format, format_kind, i set_debug_format() jako część P2286R8 Formatowania Ranges zgodnie z P0009R18 oraz kolejnych zmian sformułowań, które zostały zastosowane do Standardu C++23. format() Ponadto można formatować wskaźniki zgodnie z 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 LWG, ulepszenia wydajności, zoptymalizowane działanie i korekty błędów 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 języka C++ w oknie Wyjścia i nowe okno szczegółów problemu, które zawiera więcej szczegółowych informacji o błędzie. Aby uzyskać więcej informacji, zobacz Ustrukturyzowane dane wyjściowe SARIF i Okno szczegółów problemu.
  • Funkcja umożliwiająca wizualizowanie rozmiaru i wyrównania klas, struktur, unii, typów bazowych lub wyliczeń jeszcze przed skompilowaniem kodu. Najedź wskaźnikiem myszy na identyfikator, a okienko podręczne wyświetli informacje o rozmiarze i wyrównaniu.
  • Funkcja sugerująca, kiedy oznaczyć funkcje członkowskie const, ponieważ nie modyfikują stanu obiektu. Najedź kursorem na funkcję członkowską 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 przyciemnionym elemencie i użyć menu żarówki, aby usunąć ten element lub wszystkie nieużywane elementy. Można również dodawać #include dyrektywy dla jednostek, które są pośrednio dołączane poprzez inne nagłówki. Aby uzyskać więcej informacji, zobacz Czyszczenie C/C++ w programie Visual Studio.
  • Więcej wsparcia dla Unreal Engine
    • Adapter testowy Unreal Engine umożliwia odnajdywanie, uruchamianie, zarządzanie oraz debugowanie testów silnika Unreal bez opuszczania środowiska IDE programu Visual Studio.
    • Za pomocą Fragmentów kodu Unreal Engine można znaleźć typowe konstrukcje Unreal Engine jako fragmenty na liście elementów członkowskich.
    • Usługa Build Insights jest teraz zintegrowana z programem Visual Studio 2022 i współpracuje z projektami MSBuild i CMake przy użyciu MSVC. Teraz możesz wyświetlić dodatkowe informacje o kompilacji funkcji, takie jak czas kompilowania i liczba elementów ForceInlines oraz wpływ plików nagłówków na czas kompilacji. Aby uzyskać więcej informacji, zobacz Samouczek: rozwiązywanie problemów z inliningiem funkcji w czasie kompilacji i Samouczek: rozwiązywanie problemów z wpływem pliku nagłówkowego na czas kompilacji.
  • 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 biblioteki standardowej (STL) scalone w języku C++23, rozwiązania problemów LWG, ulepszenia wydajności, ulepszone zachowanie 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 projektu
  • Szczegółowe wizualizacje rozszerzania makr
  • Pobieranie jednym kliknięciem dla Podsystem Windows dla Linuxa (WSL)
  • Ulepszona obsługa komentarzy Doxygen
  • Zrozumienie procesu budowy 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 Blueprintów Unreal Engine i więcej.

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
Standardowa biblioteka (STL) połączyła funkcje C++23, rozwiązania problemów LWG, ulepszenia wydajności, ulepszone działanie 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)
  • Podgląd dziennika Unreal Engine
  • VCPKG jest teraz domyślnie dodawany
  • Wstępna obsługa C++20 w projektach C++/CLI oraz niektóre funkcje standardowej biblioteki C++23 dotyczące 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 biblioteki standardowej (STL) scalone w języku C++23, rozwiązania problemów LWG, ulepszenia wydajności, ulepszone zachowanie 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ą eksperymentalną obsługę prymitywów atomowych C11 (<stdatomic.h>). Możesz włączyć tę funkcję eksperymentalną opcją /experimental:c11atomics w trybie /std:c11 lub nowszym.

  • Dodano nowy zestaw eksperymentalnych testów o wysokim poziomie ufności do Analizatora Czasu Trwania w celu ograniczenia szumu.

  • Nowa funkcja w wersji zapoznawczej, Eksplorator plików zdalnych, umożliwia wyświetlanie katalogu plików na maszynach zdalnych w Visual Studio (VS) oraz przesyłanie plików do i z niego.

  • Zmieniono wersjonowanie plików wykonywalnych CMake dostarczanych wraz z Visual Studio, aby dopasować je do wersji Kitware.

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

  • Teraz funkcja "Przejdź do definicji" dla C++ korzysta z bardziej subtelnego wskaźnika informującego o dłuższym czasie operacji, zastępując modalne okno dialogowe z poprzednich wersji.

  • Rozpoczęto wdrażanie eksperymentu zapewniającego bardziej inteligentne wyniki w funkcji autouzupełniania i na liście członków w języku 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 Image Watch Extension (to rozszerzenie jest dostępne w witrynie Marketplace i nie jest dołączane za pośrednictwem 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 umożliwiliśmy rekurencyjne rozszerzanie w większej liczbie kontekstów i dodaliśmy opcje do wyskakującego okienka, aby skopiować rozszerzenie do schowka lub rozszerzyć makro w tekście.

  • 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 Blueprinta dla klasy lub właściwości C++, aby otworzyć Inspektor 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 kompilacji w widoku celów 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:

    • P2508R1basic_format_string, format_string, wformat_string
    • P2322R6ranges::fold_left, ranges::fold_right itd.
    • 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
W bibliotece standardowej (STL) zintegrowano funkcje C++23, rozwiązano problemy LWG, wprowadzono ulepszenia wydajności, poprawiono działanie i naprawiono 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 zapisać ustrukturyzowaną diagnostykę SARIF do określonego katalogu.

  • Dodano obsługę atrybutów C23 w funkcji IntelliSense oraz kontynuowano postęp w obsłudze modułów C++20.

  • Zwiększona wydajność indeksowania podczas otwierania nowego rozwiązania. Duże projekty mogą uzyskać 20-35% poprawę w stosunku do wersji 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 późniejszą, lub /permissive-.
    • Teraz możesz wyłączyć funkcję NRVO za pomocą 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 opcji, zobacz informacje o wydaniach LLVM i informacje o wydaniach Clang.

  • Dodano obsługę artefaktów vcpkg w programie Visual Studio dla projektów CMake. 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 poprzez /FI, IntelliSense zawsze przetwarzał go najpierw, przed wszystkimi innymi nagłówkami dołączonymi za pośrednictwem /FI. To zachowanie nie jest zgodne z zachowaniem kompilacji. 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 o tym, co jest dostępne, zobacz informacje o wersji 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 elementów 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 przez dodanie /std:c++latest do opcji kompilatora.

    • P2302R4ranges::contains, 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.

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

  • Dodano obsługę presetów CMake w wersji 4. Aby uzyskać szczegółowe informacje o dostępnych funkcjach, zobacz notatki 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
Elementy biblioteki standardowej (STL) zintegrowane w C++23, rozwiązania kwestii LWG, poprawa wydajności, bardziej skuteczne zachowanie oraz 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 obciążeniu Programowanie gier w języku C++ w Instalatorze programu Visual Studio wybrano wsparcie dla Unreal Engine w środowisku IDE. Podczas pracy nad projektem UE kliknij prawym przyciskiem myszy w projekcie lub w folderze/filtrze i wybierz Dodaj>klasę UE.
  • Przejdź do definicji teraz zapamiętuje poprzedni podpis i przechodzi odpowiednio, gdy lepsze dopasowanie jest niedostępne (na przykład po ręcznej zmianie podpisu jednej z par). Reakcja 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 enum ukończenia typu (na przykład przypisania do enum zmiennych, etykiet case, zwracania typu enum itd.) lista autouzupełniania została teraz ograniczona 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 doświadczeniami z użyciem narzędzia vcpkg w scenariuszach innych niż MSBuild, aby dodać większą funkcjonalność.
  • Dodano okno Monitor szeregowy na potrzeby programowania osadzonego, dostępne za pośrednictwem Debug>Windows>Serial Monitor.
  • 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 tym, co jest dostępne, zobacz notatki o wydaniu LLVM i Clang.
  • Zaktualizowano równoległą wersję zestawu 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 w pracy z modułami języka C++ w edytorze. Nieustannie pracujemy nad poprawą jakości doświadczenia, ale zachęcamy do wypróbowania ich 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
Standardowa biblioteka (STL) scaliła raporty dotyczące usterek w C++20, funkcje z C++23, rozwiązania problemów LWG, ulepszenia wydajności, poprawione działanie i usunięte 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, przełączane przez naciśnięcie Alt+F1 lub dwukrotne naciśnięcie 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 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ątkowej i końcowej wskaźnika stosu w oknie narzędzi RTOS, otwiera się ono 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 u góry widoku urządzeń peryferyjnych.
  • 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 w ramach opcji /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 MSVC's STL Completes /std:c++20.
  • Dodaliśmy różne funkcje biblioteki C++23 dostępne w opcji /std:c++latest. Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian repozytorium STL.
  • Zwiększona wydajność początkowego indeksowania w C++ o maksymalnie 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!
Biblioteka standardowa (STL) połączyła funkcje C++23, rozwiązano problemy LWG, poprawiono wydajność, ulepszono działanie i naprawiono 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 rdzeni na zdalnym systemie macOS za pomocą Visual Studio z wykorzystaniem LLDB lub GDB.
  • Wersje Clang i LLVM dostarczane z Visual Studio są uaktualniane do wersji 13.
  • Integracja narzędzia CMake w programie Visual Studio jest aktywna tylko wtedy, gdy element CMakeLists.txt jest zidentyfikowany w katalogu głównym otwartego obszaru roboczego. Jeśli CMakeLists.txt zostanie zidentyfikowany na innym poziomie obszaru roboczego, otrzymasz powiadomienie z prośbą o aktywację integracji CMake w Visual Studio.
  • Nowe widoki, które umożliwiają inspekcję i interakcję z rejestrami peryferyjnymi mikrokontrolerów 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 poprzez Debug>Okna>Obiekty RTOS. 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 funkcje C++23 i C++26, raporty o wadach języka C++20, rozwiązania problemów 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 stosuje haszowanie źródła SHA-256 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.

Przeładowywanie na gorąco w natywnym C++

  • Przeładowywanie na gorąco dla języka C++ umożliwia wprowadzanie wielu typów poprawek do kodu w działającej aplikacji i stosowanie ich bez konieczności pauzowania działania aplikacji, na przykład 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 wspierane przez natywną funkcję Edycji i Kontynuacji. Aby uzyskać więcej informacji na temat obsługiwanych edycji, zobacz Edytowanie i kontynuowanie (C++).

  • Funkcja Hot Reload obsługuje projekty CMake i typu 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 tego, co jest dostępne w tej wersji, zobacz notatki o wydaniu CMake 3.21.

  • Strony przeglądu narzędzia CMake są aktualizowane, aby obsługiwać CMakePresets.json.

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

  • Visual Studio teraz 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) zostały tutaj wyróżnione. 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 jego iteratorów), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (i jego iteratora/sentinela), 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, a także do rodzin has_facet() i isalnum().
  • 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ą cechę biblioteki standardowej języka 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 Zakazać konstruowania basic_string i basic_string_view z nullptr. Ta zmiana jest zmianą łamiącą zgodność ź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ę odzyskiwania 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 back_insert_iterator dla basic_string lub vector, i wykonuje szybsze wywołanie do insert() przy end() kontenera.
  • Poprawiliśmy wydajność std::find() i std::count() w przypadku vector<bool> o 19-krotnie i 26-krotnie (razy, a nie procent).
  • Poprawiliśmy wydajność std::count() dla vector<bool>
  • std::byte teraz 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 są uaktualniane do wersji LLVM 12. Aby uzyskać więcej informacji, zobacz uwagi do wydania 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 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 linki dotyczące wycofania AMP.

Ulepszenia funkcji IntelliSense

  • Wprowadziliśmy ulepszenia w funkcji IntelliSense języka C++ przy zapewnieniu 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ę użycia nagłówków z pamięci podręcznej oraz dostępu do bazy danych symboli, co pozwala na szybsze ładowanie i przejście do kodu.
  • Funkcja Linter kodu IntelliSense dla języka C++ jest teraz domyślnie włączona, zapewniając błyskawiczne sugestie podczas wpisywania i naprawianie sugestii dotyczących typowych wad 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 .
  • Tryb obciążenia Programowanie gier z C++ teraz instaluje najnowszy Unreal Engine z obsługą Visual Studio 2022.

Ulepszenia analizy kodu

  • Analiza kodu wymusza teraz sprawdzanie zwracanych wartości funkcji oznaczonych za pomocą adnotacji _Check_return_ lub _Must_inspect_result_.
  • Wykrywanie dereferencji wskaźnika null zostało ulepszone w naszym narzędziu do analizy kodu.
  • Dodano obsługę analizy gsl::not_null kodu.
  • Obsługa biblioteki Libfuzzer w ramach opcji kompilatora /fsanitize=fuzzer .

Informacje o wersji 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ę, używając ikony Wyślij opinię w prawym górnym rogu instalatora lub środowiska Visual Studio IDE, albo z menu Pomoc, wybierając 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.