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.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 jaki będzie to miało wpływ na projekty, 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).
  • Ulepszenia biblioteki standardowej: biblioteka standardowa dodała obsługę wskaźników formatowania P2510R3, co powoduje wprowadzenie zestawu specyfikatorów formatu wskaźników w przypadku używania std::format większej liczby zgodnej z tymi, które już istnieją dla liczb całkowitych. Ulepszono wektoryzowane implementacje elementów std::min_element, std::ranges::mini znajomych.
  • Szczegółowe informacje o 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 Czysty wirtualny język C++ — widok Szablony 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. Jest to funkcja, która jest aktywowana za pomocą opcji>narzędzia>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ń środowiska użytkownika: środowisko użytkownika zapewnia bardziej bezproblemowe środowisko podczas nawiązywania połączenia z systemami zdalnymi. Aby uzyskać więcej informacji, zobacz Ulepszenia użyteczności w programie Visual Studio Menedżer połączeń.
  • Komentarze do żądania ściągnięcia: możesz teraz wyświetlać komentarze usług GitHub i Azure DevOps bezpośrednio w pliku roboczym. Włącz flagę funkcji, komentarze żądania ściągnięcia w obszarze Opcje>Funkcje wersji zapoznawczej środowiska>i wyewidencjonuj gałąź żądania ściągnięcia, aby rozpocząć pracę.
  • Zawartość wygenerowana przez sztuczną inteligencję: Narzędzie GitHub Copilot może teraz wersję roboczą opisów żądań ściągnięcia. Wymaga aktywnej subskrypcji narzędzia GitHub Copilot. Wypróbuj tę treść, klikając ikonę Dodaj opis żądania ściągnięcia wygenerowaną przez sztuczną inteligencję w oknie Tworzenie żądania ściągnięcia.
  • Podgląd obrazu: umieść kursor nad ścieżką obrazu, aby wyświetlić podgląd ze szczegółami rozmiaru. Rozmiar jest ograniczony do szerokości i wysokości 500 pikseli.

    Zrzut ekranu przedstawiający podgląd aktywowania wskaźnika myszy.

    Wskaźnik myszy znajduje się na linii std::filesystem::p ath 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ępniona przez okno dialogowe Dołączanie do procesu jest bardziej przyjazna dla użytkownika. Teraz można łatwo przełączać się między widokami drzewa i list, organizować procesy lepiej za pomocą zwijanych sekcji i wybierać typy kodu z uproszczonym polem kombi. Ponadto funkcja "Wybieranie/śledzenie okna" jest teraz łatwiejsza, umożliwiając śledzenie dwukierunkowe: wybieranie procesu wyróżnia okno i kliknięcie okna wybiera jego proces.
  • Integracja z rozwiązaniem GitHub Copilot: ujednolicono rozszerzenia GitHub Copilot i Copilot Chat, a teraz dostarczamy je 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 Instalator programu Visual Studio GitHub Copilot.

    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, dowiedz się więcej 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
Funkcje biblioteki standardowej (STL) scalone w języku C++23, ulepszenia wydajności, ulepszone zachowanie, rozwiązania problemów z lwg i 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 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 Build Insights, przechodząc do sekcji Kompilowanie>szczegółowych informacji o kompilacji w kompilacji rozwiązania.>

    Zrzut ekranu przedstawiający diagnostykę #include.

    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.

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

    Zrzut ekranu przedstawiający okno dialogowe opcji 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 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.

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, ulepszone zachowanie i naprawione błędy 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:

  • 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.
    • 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 funkcją tworzenia w czasie kompilacji i Samouczek: rozwiązywanie problemów z wpływem pliku nagłówka na czas kompilacji.
  • 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.

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 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
  • Analiza 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.

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
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.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 nierealnego aparatu
  • VCPKG jest teraz domyślnie dodawany
  • Początkowa obsługa języka C++20 w projektach C++/CLI oraz niektóre standardowe funkcje bibliotek języka C++23 dla 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::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 . 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_stringwformat_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

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

    • P1328R1 constexpr type_info::operator==()

    • ranges::iotaP2440R1 , , ranges::shift_leftranges::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.

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

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
Scalona biblioteka Standardowa (STL) scaliła raporty wad języka C++20, funkcje języka C++23, rozwiązania problemów LWG, ulepszenia wydajności, ulepszone zachowanie i naprawione 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 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

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!
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.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ć 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

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++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.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 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_view unreachable_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::string constexpr w programie VS 2019 16.10. Teraz obsługiwane w języku Clang.
  • P1004R2 wykonane std::vector constexprw 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 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ę 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.