Co nowego w języku C++ w Visual Studio 2022 r.

Visual Studio 2022 r. wprowadza wiele aktualizacji i poprawek do środowiska Microsoft C++. Dodaliśmy funkcje i naprawiliśmy wiele usterek i problemów w kompilatorze i narzędziach. Program Visual Studio IDE oferuje również znaczącą poprawę wydajności i produktywności, a teraz działa natywnie jako aplikacja 64-bitowa. Aby uzyskać więcej informacji na temat nowości w Visual Studio, odwiedź stronę Co nowego w programie Visual Studio 2022. Aby uzyskać informacje o nowościach w witrynie C++ docs, zobacz Microsoft C++ docs: What's new (Microsoft C++ docs: Co nowego).

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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio, zobacz Co nowego w programie Visual Studio 2022 w wersji 17.1.

  • Dodano nowy szablon Konfiguruj ustawienia wstępne w celu konfigurowania i kompilowania projektów CMake w zdalnym systemie macOS za pomocą usługi 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 z bazą danych GDB lub LLDB.

  • Teraz można debugować zrzuty rdzeni w zdalnym systemie macOS z usługi Visual Studio z lldb lub GDB.

  • Wersje programu i Clang dostarczane LLVM z Visual Studio zostały uaktualnione do wersji 13.

  • Visual Studio CMake jest aktywna tylko wtedy, gdy CMakeLists.txt w katalogu głównym otwartego obszaru roboczego zostanie zidentyfikowana. Jeśli zostanie CMakeLists.txt zidentyfikowany na innym poziomie obszaru roboczego, zostanie wyświetlony monit o aktywowanie integracji Visual Studio CMake z powiadomieniem.

  • Dodano nowe okno wizualizacji rejestru dla osadzonych obiektów docelowych, > dostępne za pośrednictwem> Windows Rejestry osadzone.

  • Dodano nowy widok wątku dla projektów RTOS, dostępny za pośrednictwem obiektów Windows>>RTOS.

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

Aby uzyskać podsumowanie nowych funkcji i poprawek błędów w programie Visual Studio, zobacz Co nowego w programie Visual Studio 2022 w wersji 17.0.

  • Program Visual Studio IDE jest devenv.exeteraz natywną aplikacją 64-bitową.

  • Zestaw MSVC jest teraz domyślnie skrótem źródła SHA-256 w rekordach debugowania. Wcześniej zestaw narzędzi domyślnie używał narzędzia MD5 do tworzenia skrótów źródła.

  • 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 języka C++ umożliwia wykonywanie wielu typów edycji kodu w uruchomionej aplikacji i stosowanie ich bez konieczności wstrzymywania wykonywania aplikacji za pomocą punktu przerwania.

W Visual Studio 2022 r. po uruchomieniu aplikacji w debugerze możesz użyć przycisku Przeładowywanie na gorąco, aby zmodyfikować aplikację, gdy jest nadal uruchomiona. To środowisko jest obsługiwane przez natywną opcję Edytuj i kontynuuj. Aby uzyskać więcej informacji na temat obsługiwanych edycji, zobacz Edit and Continue (C++).

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

Obsługa WSL2

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

Ulepszona obsługa CMake

  • Uaktualniliśmy wersję CMake dostarczaną z programem Visual Studio do wersji 3.21. Aby uzyskać więcej informacji na temat tego, co jest dostępne w tej wersji, zobacz informacje o wersji CMake 3.21.

  • Strony przeglądu CMake zostały zaktualizowane w celu obsługi .CMakePresets.json

  • Teraz możesz konfigurować i kompilować projekty CMake przy użyciu CMake 3.21 i CMakePresets.json v3.

  • Visual Studio obsługuje teraz opcję w buildPresets.targets programie CMakePresets.json. Ta opcja umożliwia skompilowanie podzbioru elementów docelowych w projekcie CMake.

  • Menu Project w projektach CMake zostało usprawnione i udostępnia opcje "Usuń pamięć podręczną i skonfiguruj ponownie" oraz "Wyświetl pamięć podręczną".

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

Ulepszenia biblioteki standardowej

Ulepszenia biblioteki standardowej (STL) zostały wyróżnione tutaj. Aby uzyskać pełną listę nowych funkcji, zmian, poprawek błędów i ulepszeń wydajności, zobacz listę zmian zespołu STL.

  • Dodano wizualizatory debugowania, aby poprawić sposób wyświetlania następujących typów: , , (i jego iteratory), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (i jego iterator/sentinel), ranges::ref_view, thread, thread::id, jthreadi u8stringbind_front()source_locationfilesystem::path
  • Dodane [[nodiscard]] do rodziny stoi() funkcji w programie <string> i do różnych funkcji collate<locale> w programie , takich jak funkcje członkowskie, has_facet(), oraz tolower()isalnum() rodziny i .
  • P0980R1 W std::stringconstexpr programie VS 2019 16.10. Teraz jest ona również obsługiwana w przypadku clang.
  • P1004R2 W std::vectorconstexprprogramie VS 2019 16.10. Teraz jest ona również obsługiwana w przypadku clang.

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

  • P1048R1 Dodano is_scoped_enumnową cechę dla standardowej biblioteki języka C++, która wykrywa, czy typ jest wyliczeniem o zakresie.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains() Dla basic_string i basic_string_view
  • P1682R3to_underlying() dla wyliczeń
  • P2162R2 Zezwalaj na dziedziczenie z std::variant
  • P2166R1 Zabraniaj konstruowaniabasic_string i basic_string_view z nullptr. Ta zmiana jest zmianą źródłową. Kod, który wcześniej miał niezdefiniowane zachowanie w czasie wykonywania, jest teraz odrzucany z błędami kompilatora.
  • P2186R2 Usunięto obsługę wyrzucania elementów bezużytecznych. Ta zmiana powoduje usunięcie , declare_reachableundeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Wcześniej te funkcje nie miały żadnego efektu.

Wyróżnione ulepszenia wydajności

  • <format> Teraz wykrywa, kiedy zapisuje back_insert_iteratorbasic_stringvectordo dla lub , i wykonuje szybsze insert()end() wywołanie do w kontenerze.
  • Poprawiliśmy wydajność i dla std::find()std::count()vector<bool> 19x i 26x (razy, a nie procentowo).
  • Poprawiliśmy wydajność funkcji dla std::count()vector<bool>
  • std::byte ma teraz taką samą wydajność jak w programach unsigned charreverse() i variant::swap()

Obsługa clang i llvm

  • Narzędzia llVM dostarczane z Visual Studio zostały uaktualnione do wersji LLVM 12. Aby uzyskać więcej informacji, zobacz informacje o wersji llvm.

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

  • Teraz można debugować procesy uruchomione w systemie zdalnym z Visual Studio przy użyciu lldb.

C++ AMP przestarzałe

  • C++ AMP nagłówków są teraz przestarzałe. W <amp.h> tym w projekcie języka C++ są generowane błędy kompilacji. Aby wyciszyć błędy, zdefiniuj ._SILENCE_AMP_DEPRECATION_WARNINGS Aby uzyskać więcej informacji, zobacz nasze linki dotyczące cofaniaprecji amperów.

Ulepszenia funkcji IntelliSense

  • W funkcji IntelliSense języka C++ wprowadzono ulepszenia w zakresie wyróżniania nawigacji i składni dla typów z zaimportowanych modułów i jednostek nagłówka. Funkcja IntelliSense jest dla nas aktywnym obszarem inwestycji. Pomóż nam ulepszyć: Podziel się swoją opinią na temat Developer Community pomocą pomocyWsyłaj> opinię.

  • Poprawiliśmy wydajność funkcji IntelliSense dla języka C++, optymalizując użycie buforowanych nagłówków i dostęp do bazy danych symboli, zapewniając lepsze czasy ładowania w celu uzyskania dostępu do kodu.

  • 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 błędów kodu.

  • Funkcja IntelliSense języka C++ dla projektów CMake działa teraz w przypadku używania ustawienia wstępnego z nazwą wyświetlaną.

Aktualizacje obciążenia języka C++

  • Zaktualizowano do wersji NDK r21 LTS w obciążeniu Tworzenie aplikacji mobilnych w języku C ++.

  • W obciążeniu Opracowywanie gier w języku C++ jest teraz instalowana najnowsza wersja unreal engine z obsługą programu Visual Studio 2022.

Ulepszenia analizy kodu

  • Analiza kodu wymusza teraz zwracanie wartości funkcji z adnotacjami lub _Check_return__Must_inspect_result_ muszą być sprawdzane.

  • Ulepszyliśmy wykrywanie wyłuskania wskaźnika o wartości null w naszych narzędziach do analizy kodu.

  • Dodano obsługę dla gsl::not_null do analizy kodu.

  • Obsługa biblioteki Libfuzzer w obszarze opcji /fsanitize=fuzzer kompilatora.

Informacje o wersji dla starszych wersji

Dostępne są również informacje o wersji dla starszych wersji języka C++. Aby uzyskać informacje na temat nowości dotyczących języka 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 dotyczących języka C++ w programie Visual Studio 2017, zobacz What's new for C++ in Visual Studio 2017 (Co nowego w języku C++ w programie 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 latach 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 z Developer Community C++.

Opinie i sugestie

Chętnie pomożemy! Możesz zgłosić problem lub zasugerować funkcję, korzystając z ikony Wyślij opinię w prawym górnym rogu instalatora lub środowiska IDE > Visual Studio lub z menu PomocWsyłaj opinię. Problemy można śledzić za pomocą Visual Studio Developer Community, gdzie można dodawać komentarze lub znaleźć 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 Deweloper Microsoft blogów . Będą one na bieżąco śledzić wszystkie nowe wydania. Blogi zawierają głębokie wpisy dotyczące szerokiego zakresu funkcji. Znajdziesz blog zespołu języka C++ i blog zespołu Visual Studio blog o szczególnym zainteresowaniach.