Co nowego w języku C++ w Visual Studio 2022 r.
Visual Studio 2022 r. oferuje wiele aktualizacji i poprawek środowiska Microsoft C++. Dodaliśmy funkcje i rozwiązaliśmy wiele usterek i problemów w kompilatorze i narzędziach. Środowisko IDE 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 Visual Studio, odwiedź stronę Co nowego w Visual Studio 2022 roku. Aby uzyskać informacje o nowościach w dokumentacji języka C++, zobacz Dokumentację języka Microsoft C++: Co nowego.
Co nowego w języku C++ w Visual Studio w wersji 17.2
Aby zapoznać się z podsumowaniem nowych funkcji i poprawek błędów w Visual Studio, zobacz Co nowego w Visual Studio 2022 w wersji 17.2.
Dodano obsługę kompilatora dla funkcji deducing
this
języka C++23 dostępnej w ramach/std:c++latest
opcji .Dodano obsługę IntelliSense funkcji deducingu
this
języka C++23 iif consteval
.Dodano nazwę parametru wbudowanego i obsługę 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 przypadku generatora Visual Studio (MSBuild).
W wersji 17.1 wprowadziliśmy widoki rejestrowania 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ędzia 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 dodaje on zegarek dla obiektu.
- Po wybraniu wartości początkowych i końcowych wskaźnika stosu w oknie narzędzia RTOS zostanie otwarta w oknie pamięci.
- Dodaliśmy świadomość wątków dla elementó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.
Dodaliśmy implementacje pozostałych raportów o wadach 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 oraz wpis w blogu STL Completes/std:c++20
MSVC.Dodaliśmy różne funkcje biblioteki C++23 dostępne w ramach
/std:c++latest
tej opcji. Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian repozytorium STL.Zwiększona wydajność początkowego indeksowania języka C++ przez maksymalnie 20%, w zależności od głębokości wykresu dołączania.
Co nowego w języku C++ w Visual Studio w wersji 17.1
Aby zapoznać się z podsumowaniem nowych funkcji i poprawek błędów w Visual Studio, zobacz Co nowego w 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 Visual Studio wspieranym przez GDB lub LLDB.Teraz można debugować podstawowe zrzuty w zdalnym systemie macOS z Visual Studio przy użyciu usługi LLDB lub GDB.
Wersje i
Clang
LLVM
dostarczane z Visual Studio zostały uaktualnione do wersji 13.integracja narzędzia CMake 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 Visual Studio z powiadomieniem.Dodano nowe okno wizualizacji rejestrowania dla osadzonych obiektów docelowych, dostępne za pośrednictwem debugowania>Windows>Embedded Registers.
Dodano nowy widok wątku dla projektów RTOS, dostępny za pośrednictwem funkcji Debug>Windows>RTOS Objects.
Co nowego w języku C++ w Visual Studio w wersji 17.0
Aby zapoznać się z podsumowaniem nowych funkcji i poprawek usterek w Visual Studio, zobacz Co nowego w Visual Studio 2022 w wersji 17.0.
Środowisko IDE Visual Studio jest
devenv.exe
teraz natywną aplikacją 64-bitową.Zestaw narzędzi MSVC teraz domyślnie określa skrót sha-256 źródła w rekordach debugowania. Wcześniej zestaw narzędzi domyślnie używał funkcji MD5 do tworzenia skrótów źródłowych.
Narzędzia kompilacji w wersji 143 są teraz dostępne za pośrednictwem instalatora 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 Visual Studio 2022 r. po uruchomieniu aplikacji w debugerze możesz użyć przycisku Przeładowywanie na gorąco, aby zmodyfikować aplikację podczas jej działania. 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żesz kompilować i debugować natywnie w programie WSL2 bez nawiązywania połączenia SSH. Obsługiwane są zarówno międzyplatformowe projekty CMake, jak i projekty systemu Linux oparte na MSBuild.
Ulepszona obsługa narzędzia CMake
Uaktualniliśmy wersję narzędzia CMake dostarczoną z 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 zostały zaktualizowane w celu obsługi
CMakePresets.json
programu .Teraz można skonfigurować i skompilować projekty CMake przy użyciu narzędzia CMake 3.21 i
CMakePresets.json
wersji 3.Visual Studio obsługuje teraz
buildPresets.targets
opcję w plikuCMakePresets.json
. Ta opcja umożliwia utworzenie podzestawu obiektów docelowych w projekcie CMake.Menu Project w projektach CMake zostało 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 C++20 dla projektów CMake, zgodnie z opisem w artykule P1689R4. 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 standardowej biblioteki
Wybierz pozycję Ulepszenia biblioteki standardowej (STL) wyróżnione tutaj. Aby uzyskać kompleksową listę nowych funkcji, zmian, poprawek błędów i ulepszeń wydajności, zobacz dziennik zmian zespołu STL.
- Dodano wizualizatory debugowania w celu ulepszenia wyświetlania następujących typów:
source_location
,u8string
bind_front()
, (i jego iteratorów),default_sentinel_t
,ranges::single_view
ranges::empty_view
ranges::iota_view
unreachable_sentinel_t
(i iteratora/sentinel),thread
ranges::ref_view
thread::id
, , , ijthread
filesystem::path
- Dodano
[[nodiscard]]
dostoi()
rodziny funkcji w<string>
systemach i do różnych funkcji,<locale>
takich jakcollate
funkcje członkowskie,has_facet()
oraz rodziny iisalnum()
.tolower()
- P0980R1 Wykonane
std::string
constexpr
w programie VS 2019 16.10. Teraz jest ona również obsługiwana w języku Clang. - P1004R2 Wykonane
std::vector
constexpr
w programie VS 2019 16.10. Teraz jest ona również obsługiwana 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. - P1132R7
out_ptr()
,inout_ptr()
- P1679R3
contains()
Dlabasic_string
ibasic_string_view
- P1682R3
to_underlying()
wyliczenia - P2162R2 Zezwalaj na dziedziczenie z
std::variant
- P2166R1 Zakazać konstruowania i
basic_string_view
znullptr
.basic_string
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 usunięcie
declare_reachable
, ,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 zapisuje obiektback_insert_iterator
dla elementubasic_string
lubvector
, i sprawia, że szybsze wywołanieinsert()
end()
kontenera.- Poprawiliśmy wydajność
std::find()
istd::count()
dlavector<bool>
19x i 26x (razy, a nie procent). - Poprawiliśmy wydajność dla
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 Visual Studio zostały uaktualnione 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 Visual Studio przy użyciu usługi LLDB.
C++ AMP przestarzałe
- nagłówki C++ AMP są teraz przestarzałe. Uwzględnianie
<amp.h>
w projekcie języka C++ generuje błędy kompilacji. Aby uciszyć błędy, zdefiniuj_SILENCE_AMP_DEPRECATION_WARNINGS
wartość . Aby uzyskać więcej informacji, zobacz nasze linki amp deprecation.
ulepszenia IntelliSense
Wprowadziliśmy ulepszenia w języku C++ IntelliSense podczas zapewniania wyróżniania nawigacji i składni dla typów z zaimportowanych modułów i jednostek nagłówków. IntelliSense jest dla nas aktywnym obszarem inwestycji. Pomóż nam ulepszyć: Podziel się swoją opinią na temat Developer Community, korzystając z pomocy>wyślij opinię.
Ulepszyliśmy wydajność IntelliSense języka C++, optymalizując użycie buforowanego nagłówka i dostęp do bazy danych symboli, zapewniając lepsze czasy ładowania w celu uzyskania kodu.
Kod lintera IntelliSense dla języka C++ jest domyślnie włączony, zapewniając błyskawiczne sugestie podczas wpisywania i naprawianie sugestii dotyczących typowych wad kodu.
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 Programowanie mobilne języka C++ .
Programowanie gier w języku C++ instaluje teraz 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.Ulepszyliśmy wykrywanie dereferencji wskaźnika null w narzędziu do analizy kodu.
Dodano obsługę
gsl::not_null
analizy 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 o nowościach dla języka C++ w Visual Studio 2019 r., zobacz Co nowego dla języka C++ w Visual Studio 2019 r. Aby uzyskać informacje o nowościach dla języka C++ w Visual Studio 2017, zobacz Co nowego dla języka C++ w Visual Studio 2017. Aby uzyskać informacje o nowościach we wcześniejszych wersjach, zobacz Visual C++ What's New 2003 to 2015 (Co nowego w wersji 2003–2015).
Znane problemy
IntelliSense języka C++
Aby uzyskać więcej informacji na temat innych otwartych problemów i dostępnych obejść dla języka C++ w Visual Studio 2022 r., zobacz listę problemów z Developer Community języka C++.
Opinie i sugestie
Chętnie pomożemy! Możesz zgłosić problem lub zasugerować funkcję przy użyciu ikony Wyślij opinię w prawym górnym rogu instalatora lub środowiska IDE Visual Studio albo z obszaruWyślij opinięw pomocy>. Problemy można śledzić przy użyciu Visual Studio Developer Community, gdzie dodasz komentarze lub znajdziesz 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 blogów dla deweloperów firmy Microsoft . Zapewnią one aktualność wszystkich nowych wersji. Blogi obejmują szczegółowe wpisy na temat szerokiej gamy funkcji. Znajdziesz blog zespołu języka C++ i blog Visual Studio o szczególnym znaczeniu.