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 zapoznać się z omówieniem ulepszeń języka C++ w programach Visual Studio, VS Code i vcpkg w 2023 r., zobacz Rok ulepszeń języka C++
- Aby uzyskać informacje o nowościach w dokumentacji języka C++, zobacz Microsoft C++ docs: What's new (Dokumentacja języka Microsoft C++: co nowego).
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>.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.
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.
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
iformattable
std::span
,range_format
format_kind
, iset_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ę jakoconst
. - 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::forward
std::move_if_noexcept
istd::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
lubstd: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:
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
/FI
funkcji , 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()
iranges::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: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>
P1328R1
constexpr type_info::operator==()
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 łą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 doenum
zmiennych, etykiet wielkości liter, zwracanegoenum
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
this
języka C++23 dostępnej w/std:c++latest
ramach opcji .Dodano obsługę funkcji IntelliSense dla funkcji deducing
this
języka C++23 iif 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 iLLVM
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 elementCMakeLists.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++
- Przeładowywanie na gorąco dla języka C++ umożliwia edytowanie wielu typów kodu w uruchomionej aplikacji i stosowanie ich bez konieczności wstrzymania wykonywania aplikacji z punktem 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 ś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ę wCMakePresets.json
programie . 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_view
unreachable_sentinel_t
ranges::single_view
default_sentinel_t
ranges::empty_view
, (i iteratora/sentinel),ranges::ref_view
,thread
,thread::id
, ijthread
filesystem::path
- Dodano
[[nodiscard]]
do rodziny funkcji w<string>
systemach i do różnych funkcji,<locale>
takich jakcollate
funkcje składowe,has_facet()
oraz rodziny iisalnum()
tolower()
.stoi()
- P0980R1 wykonane
std::string
constexpr
w programie VS 2019 16.10. Teraz obsługiwane w języku Clang. - P1004R2 Wykonane
std::vector
constexpr
w programie VS 2019 16.10. Teraz obsługiwane w języku Clang.
Wyróżnione funkcje języka C++23
- P1048R1 Dodano
is_scoped_enum
nową cechę biblioteki standardowej języka C++, która wykrywa, czy typ jest wyliczeniem o określonym zakresie. out_ptr()
P1132R7,inout_ptr()
contains()
P1679R3 dlabasic_string
ibasic_string_view
to_underlying()
P1682R3 dla wyliczeń- P2162R2 Zezwalaj na dziedziczenie z
std::variant
- P2166R1 Zakazać konstruowania
basic_string
ibasic_string_view
znullptr
. 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_reachable
usunięcie , ,undeclare_reachable
,declare_no_pointers
,get_pointer_safety
undeclare_no_pointers
. Wcześniej te funkcje nie miały wpływu.
Wyróżnione ulepszenia wydajności
<format>
teraz wykrywa, kiedy zapisujeback_insert_iterator
w obiekcie dla elementubasic_string
lubvector
, i wykonuje szybsze wywołanieinsert()
elementu wend()
kontenerze.- Poprawiliśmy wydajność
std::find()
istd::count()
dlavector<bool>
19x i 26x (razy, a nie procent). - Poprawiliśmy wydajność dla polecenia
std::count()
vector<bool>
std::byte
teraz ma taką samą wydajność jakunsigned char
w systemiereverse()
ivariant::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.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla