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

Krótko mówiąc, niektóre nowe funkcje to:

  • #include diagnostyka, która zapewnia szczegółową analizę #include dyrektyw. Aktywuj tę funkcję, #include klikając prawym przyciskiem myszy i wybierając dyrektywy>#include Włącz diagnostykę dyrektywy #include. Nad każdym z nich #include znajduje się liczba odwołań do tego #include pliku. Kliknij link odwołania, aby przejść do lokalizacji, w której kod używa czegoś z tego pliku nagłówka. Aby wyświetlić czas kompilacji #include dyrektyw, uruchom polecenie Kompilacja Szczegółowe informacje, przechodząc do sekcji Kompilowanie>kompilacji uruchom Szczegółowe informacje kompilacji w kompilacji rozwiązania>.

    Screenshot of #include diagnostics

    Powyżej pliku #include jest link **odwołanie** i wiele odwołań do tego pliku dołączania #(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 link Układ pamięci w szybkich informacjach , aby otworzyć dedykowane okno z układem pamięci wybranego typu. Umieszczenie kursora na poszczególnych typach danych w tym oknie zawiera szczegółowe informacje o ich rozmiarze i przesunięciu w obrębie typu.

    Screenshot of the memory layout window

    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 punktów dla lokalizacji głowy i treści, wyniku itd.

  • Teraz możesz określić własny niestandardowy 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 pozycji Opcje narzędzi>i wybierz pozycję Ogólne narzędzia CMake.> Wybierz pozycję Włącz niestandardowy plik wykonywalny narzędzia CMake i określ ścieżkę katalogu pliku wykonywalnego narzędzia CMake.

    Screenshot of the CMake options dialog

    Okno dialogowe opcji narzędzia CMake z wyróżnioną opcją "Włącz niestandardowy plik wykonywalny narzędzia CMake" i pole "Katalog wykonywalny CMake".

  • Ulepszona funkcja IntelliSense dla projektów aparatu Unreal Engine.
  • Ulepszona obsługa języka C++23: std::format iformattablestd::span , range_formatformat_kind, i set_debug_format() w ramach P2286R8 zakresów<mdspan> formatowania na P0009R18 i kolejnych zmian sformułowań, które zostały zastosowane do standardu C++23. format() Ponadto można formatować wskaźniki na P2510R3.

Aby uzyskać podsumowanie aktualizacji zaplecza języka C++, zobacz Aktualizacje zaplecza MSVC od wersji 17.3 programu Visual Studio 2022.

Aby uzyskać podsumowanie nowych funkcji w środowisku IDE programu Visual Studio 17.9, zobacz Informacje o wersji 17.9 programu Visual Studio 2022.

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

Krótko mówiąc, niektóre nowe funkcje to:

  • Diagnostyka ustrukturyzowana języka C++ w oknie Dane wyjściowe i 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, związków, typów bazowych lub wyliczenia jeszcze przed skompilowaniem kodu. Zatrzymaj wskaźnik myszy na identyfikatorze i wyświetli informacje o rozmiarze i wyrównaniu.
  • Funkcja sugerująca, kiedy oznaczyć funkcje const składowe, ponieważ nie modyfikują stanu obiektu. Umieść kursor na funkcji składowej 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 wygaszonej dołączeniu i użyć menu żarówki, aby usunąć, które zawierają lub wszystkie nieużywane dołączane. 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 aparatu Unreal Engine:
    • Adapter testowy unreal engine umożliwia odnajdywanie, uruchamianie i debugowanie testów aparatu Unreal oraz zarządzanie nimi 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.
    • Kompilowanie Szczegółowe informacje jest teraz zintegrowane 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 potrzebny do skompilowania i liczba elementów ForceInlines.
  • Zdalna obsługa testów jednostkowych systemu Linux umożliwia teraz uruchamianie testów CTest i GTest na zdalnych maszynach z systemem Linux z Poziomu Eksploratora testów programu Visual Studio, podobnie jak testy lokalne.

Aby uzyskać kompleksowe podsumowanie nowych funkcji języka C++ w programie Visual Studio 17.8, zobacz Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.8.

Aby uzyskać podsumowanie nowych funkcji w środowisku IDE programu Visual Studio 17.8, zobacz Informacje o wersji 17.8 programu Visual Studio 2022.

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

Podsumowanie nowych funkcji języka C++ w programie Visual Studio 17.7 zawiera artykuł What's New for C++ Developers in Visual Studio 2022 17.7 (Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.7).

Krótko mówiąc, niektóre nowe funkcje to:

  • Szybsze debugowanie sesji i szybsze czasy ładowania projektu
  • Szczegółowe wizualizacje rozszerzania makr
  • Pobieranie jednym kliknięciem dla Podsystem Windows dla systemu Linux (WSL)
  • Ulepszona obsługa komentarzy Doxygen
  • Szczegółowe informacje 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 strategii aparatu Unreal Engine i nie tylko.

Podsumowanie nowych funkcji języka C++ specyficznych dla tworzenia gier można znaleźć w temacie Unleashing the Power of Visual Studio 2022 for C++ Game Development (Wyzwalanie mocy programu Visual Studio 2022 for C++ Game Development)

Podsumowanie nowych funkcji w środowisku IDE programu Visual Studio 17.7 można znaleźć w temacie Visual Studio 2022 version 17.7 Release Notes (Informacje o wersji programu Visual Studio 2022 w wersji 17.7).

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

Podsumowanie nowych funkcji języka C++ w programie Visual Studio 17.6 zawiera artykuł What's New for C++ Developers in Visual Studio 2022 17.6 (Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.6).

Krótko mówiąc, niektóre nowe funkcje to: debugowanie skryptów CMake, wbudowana obsługa języka cieniowania wysokiego poziomu (HLSL), przeglądarka dzienników aparatu unreal, początkowa obsługa języka C++20 w projektach C++/CLI, VCPKG jest teraz domyślnie dodawana, a niektóre standardowe funkcje bibliotek języka C++23 dla zakresów. Aby wyświetlić pełną listę nowych funkcji dodanych do biblioteki standardowej, zobacz dziennik zmian biblioteki STL.

Aby uzyskać podsumowanie nowych funkcji w środowisku IDE programu Visual Studio 17.6, zobacz Informacje o wersji 17.6 programu Visual Studio 2022.

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

Podsumowanie nowych funkcji języka C++ w programie Visual Studio w wersji 17.5 można znaleźć w temacie What's New for C++ Developers in Visual Studio 2022 17.5 (Co nowego dla deweloperów języka C++ w programie Visual Studio 2022 17.5). Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w środowisku IDE programu Visual Studio w wersji 17.5, zobacz Informacje o wersji programu Visual Studio 2022 w wersji 17.5.

  • std::move, , std::forwardstd::move_if_noexcepti std::forward_like teraz nie generują wywołań funkcji w wygenerowany kod, 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]] element do obsługi powyższego elementu. 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ą z opcją /experimental:c11atomics w /std:c11 trybie lub nowszym.

  • Dodano nowy zestaw eksperymentalnych testów o wysokim poziomie ufności do modułu sprawdzania okresu istnienia w celu zmniejszenia szumu.

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

  • Zmieniono przechowywanie wersji plików wykonywalnych CMake dostarczanych z programem Visual Studio w celu dopasowania ich do wersji kitware.

  • Dodano obsługę Przeładowywanie na gorąco do szablonu projektu CMake.

  • Przejdź do definicji języka C++ używa teraz bardziej subtelnego wskaźnika operacji, zastępując modalne okno dialogowe z poprzednich wersji.

  • Rozpoczęto wdrażanie eksperymentu zapewniającego bardziej inteligentne wyniki na liście autouzupełniania i 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 zegarka obrazu (to rozszerzenie jest dostępne w witrynie Marketplace i nie jest powiązane za pośrednictwem Instalator 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 rozszerzanie cyklicznego w większej liczniejszych kontekstach i dodaliśmy opcje do wyskakującego okienka w celu skopiowania rozszerzenia do schowka lub rozwinięcia makra wbudowanego.

  • 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 obiektów docelowych do skompilowania w widoku Obiektów docelowych narzędzia 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_stringP2508R1, format_string,wformat_string
    • ranges::fold_leftP2322R6, ranges::fold_rightitd.
    • views::zip P2321R2 (nie obejmuje zip_transform, adjacenti adjacent_transform)

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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio w wersji 17.4, zobacz Informacje o wersji 17.4 programu Visual Studio 2022 i nowości dla deweloperów języka C++ w programie Visual Studio 2022 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 w celu wyprowadzenia ustrukturyzowanej diagnostyki SARIF do określonego katalogu.

  • Dodano obsługę atrybutów C23 do funkcji IntelliSense i ciągłego postępu obsługi modułów języka C++20.

  • Zwiększona wydajność indeksowania podczas otwierania nowego rozwiązania. Duże projekty mogą zobaczyć 20-35% poprawę z 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 w obszarze/Od, jeśli użytkownik przekaże opcję lub /std:c++20 nowszą /Zc:nrvo lub /permissive-.
    • Teraz możesz wyłączyć funkcję NRVO z opcją /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 wersji maszyn wirtualnych LLVM i Clang .

  • Dodano obsługę artefaktów vcpkg w programie Visual Studio z projektami 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 funkcji i wymuszony za pośrednictwem /Yu/FIfunkcji , funkcja IntelliSense zawsze przetwarzała ją jako pierwszą, zanim wszystkie inne nagłówki zawarte za pośrednictwem polecenia /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 na temat dostępnych informacji, 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 ranges::min_element()elementów , 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 uwzględnienie /std:c++latest ich w opcjach 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 dlastd::stacktrace

    • P1328R1constexpr type_info::operator==()

    • ranges::iotaP2440R1, ranges::shift_left,ranges::shift_right

    • P2441R2views::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 łączą teraz wersje Arm64 CMake i Ninja.

  • Dodano obsługę ustawień wstępnych CMake w wersji 4. Aby uzyskać szczegółowe informacje na temat dostępnych informacji, zobacz informacje o wersji narzędzia CMake.

  • Połączenia systemu zdalnego przy użyciu menedżera Połączenie ion 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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio w wersji 17.3, zobacz Visual Studio 2022 w wersji 17.3 — informacje o wersji i ulepszenia języka C++.

  • Ł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 Instalator programu Visual Studio wybrano obsługę środowiska IDE dla aparatu Unreal Engine. Podczas pracy nad projektem UE kliknij prawym przyciskiem myszy projekt lub folder/filtr i wybierz polecenie 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). Czas odpowiedzi funkcji Przejdź do wszystkich został ulepszony. 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 wielkości liter, zwracanego enum typu itd.) lista autouzupełniania jest teraz filtrowana tylko do pasujących modułów wyliczających 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 środowiskami z udziałem narzędzia vcpkg w scenariuszach innych niż MSBuild i w celu dodania większej funkcjonalności.

  • Dodano okno Monitor szeregowy na potrzeby programowania osadzonego dostępne za pośrednictwem debugowania >monitora szeregowego systemu Windows.>

  • 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ępności, zobacz informacje o wersji maszyny wirtualnej LLVM i Clang .

  • Zaktualizowano 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 środowiska w edytorze modułów języka C++. Nieustannie pracujemy nad poprawą jakości środowiska, 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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio w wersji 17.2, zobacz Informacje o wersji programu Visual Studio 2022 w wersji 17.1.

  • 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 klawiszy Alt+F1 lub dwukrotne naciśnięcie klawiszy 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 rejestracji urządzeń peryferyjnych i RTOS dla deweloperów osadzonych. 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 w /std:c++20 ramach opcji . Aby uzyskać więcej informacji na temat wdrożonych backportów, zobacz projekt C++20 Defect Reports w repozytorium Microsoft/STL GitHub i wpis w blogu STL Completes /std:c++20 MSVC.

  • Dodaliśmy różne funkcje biblioteki języka C++23 dostępne w /std:c++latest ramach opcji . Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian repozytorium STL.

  • Zwiększona wydajność początkowego indeksowania języka C++ o maksymalnie 20%, w zależności od głębokości wykresu dołączania.

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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio w wersji 17.1, zobacz Informacje o wersji programu Visual Studio 2022 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ć podstawowe zrzuty w zdalnym systemie macOS z poziomu programu Visual Studio przy użyciu usługi LLDB lub GDB.
  • Wersje programu Clang Visual Studio i LLVM dostarczane z programem Visual Studio są uaktualniane do wersji 13.
  • Integracja narzędzia CMake programu Visual Studio jest aktywna tylko wtedy, gdy CMakeLists.txt element jest identyfikowany w katalogu głównym otwartego obszaru roboczego. Jeśli element CMakeLists.txt zostanie zidentyfikowany na innym poziomie obszaru roboczego, zostanie wyświetlony monit o aktywowanie integracji narzędzia CMake programu Visual Studio z powiadomieniem.
  • Nowe widoki, które umożliwiają inspekcję i interakcję z rejestrami peryferyjnymi na mikrokontrolerach i obiektach systemów operacyjnych czasu rzeczywistego (RTOS), dostępnych za pośrednictwem debugowania >rejestrów systemu Windows Embedded>
  • Dodano nowy widok wątków dla projektów RTOS, dostępny za pośrednictwem debugowania >obiektów systemu Windows>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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio, zobacz Informacje o wersji programu 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 domyślnie określa skrót sha-256 ź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 autonomicznych narzędziach kompilacji.

Przeładowywanie na gorąco dla natywnego języka C++

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 środowisko jest obsługiwane przez natywną edycję 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 w tej wersji, zobacz informacje 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.

  • Program Visual Studio obsługuje buildPresets.targets teraz opcję w CMakePresets.jsonprogramie . 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

W tym miejscu wyróżniono ulepszenia biblioteki standardowej (STL). 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), ranges::iota_viewunreachable_sentinel_tranges::single_viewdefault_sentinel_tranges::empty_view, (i iteratora/sentinel), ranges::ref_view, thread, thread::id, i jthreadfilesystem::path
  • Dodano [[nodiscard]] do rodziny funkcji w <string> systemach i do różnych funkcji, <locale> takich jak collate funkcje składowe, has_facet()oraz rodziny i isalnum()tolower() .stoi()
  • P0980R1 wykonane std::stringconstexpr w programie VS 2019 16.10. Teraz obsługiwane w języku Clang.
  • P1004R2 Wykonane std::vectorconstexprw 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()
  • contains() P1679R3 dla basic_string ibasic_string_view
  • to_underlying() P1682R3 dla wyliczeń
  • P2162R2 Zezwalaj na dziedziczenie zstd::variant
  • P2166R1 Zakazać konstruowaniabasic_string i basic_string_view z nullptr. 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ę odzyskiwania pamięci. Ta zmiana powoduje declare_reachableusunięcie , , undeclare_reachable, declare_no_pointers, get_pointer_safetyundeclare_no_pointers. Wcześniej te funkcje nie miały wpływu.

Wyróżnione ulepszenia wydajności

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

Obsługa oprogramowania Clang i LLVM

  • Narzędzia LLVM dostarczane z programem Visual Studio są uaktualniane do maszyny WIRTUALNEJ LLVM 12. Aby uzyskać więcej informacji, zobacz informacje o wersji maszyny wirtualnej LLVM.

  • Obsługa języka Clang-cl została zaktualizowana do maszyny WIRTUALNEJ LLVM 12.

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

Przestarzałe C++ AMP

  • 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 amp deprecation.

Ulepszenia funkcji IntelliSense

  • Wprowadziliśmy ulepszenia w funkcji IntelliSense języka C++ podczas udostępniania wyróżniania nawigacji i składni dla typów z zaimportowanych modułów i jednostek nagłówka. 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++, optymalizując użycie nagłówka w pamięci podręcznej i dostęp do bazy danych symboli, zapewniając ulepszone czasy ładowania umożliwiające 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 .

  • Programowanie gier w języku C++ teraz instaluje najnowszy aparat Unreal Engine z obsługą programu Visual Studio 2022.

Ulepszenia analizy kodu

  • Analiza kodu wymusza teraz, aby zwracały wartości funkcji z adnotacjami _Check_return_ lub _Must_inspect_result_ muszą być sprawdzane.

  • Wykrywanie wyłusek 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 starszych wersji języka C++. Aby uzyskać informacje na temat nowości w języku C++ w programie Visual Studio 2019, zobacz Co nowego w języku C++ w programie Visual Studio 2019. Aby uzyskać informacje na temat nowości w języku C++ w programie Visual Studio 2017, zobacz Co nowego w języku C++ w programie Visual Studio 2017. Aby uzyskać informacje na temat nowości we wcześniejszych wersjach, zobacz Visual C++ What's New 2003–2015 (Co nowego w wersji 2003–2015).

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ę przy użyciu ikony Wyślij opinię w prawym górnym rogu instalatora lub środowiska IDE programu Visual Studio albo w obszarze Wyślij opinię w Pomocy>. 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.