Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 uzyskać informacje na temat dat kompilacji wersji, zobacz Historia wersji programu Visual Studio 2022.
Co nowego w języku C++ w programie Visual Studio w wersji 17.14
Wydany w maju 2025 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.14 |
Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy | Dziennik zmian STL 17.14 |
Nowe funkcje w środowisku IDE | Informacje o wersji 17.14 programu Visual Studio 2022 |
Aktualizacje języka C++ | Aktualizacje języka C++ w MSVC w programie Visual Studio 2022 17.14 |
Ulepszenia zgodności języka C++ | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.14 |
Krótkie wyróżnienie niektórych nowych funkcji:
Debugowanie dynamiczne języka C++ umożliwia debugowanie zoptymalizowanego kodu bez wpływu na wydajność. Aby uzyskać więcej informacji, zobacz Debugowanie dynamiczne języka C++.
Zaimplementowano funkcje języka C++23 (wymaga
/std:c++latest
lub/std:c++23preview
):static operator()
static operator[]
-
if consteval
. Umożliwia uruchamianie innego kodu w zależności od tego, czy instrukcja jest wykonywana w czasie kompilacji, czy w czasie wykonywania.
Automatycznie generuj komentarze dokumentacji za pomocą narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Wprowadzenie do automatycznego generowania komentarzy dokumentacji w programie Visual Studio.
Użyj selektora modelu w programie Visual Studio, aby wybrać model AI dla narzędzia GitHub Copilot. Aby uzyskać więcej informacji, zobacz Zmienianie modelu AI dla czatu Copilot. Ten zrzut ekranu przedstawia selektor modelu w dolnej części okna czatu w usłudze GitHub Copilot:
Lista rozwijana selektora modelu jest otwarta. Dostępne opcje to: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking i inne.
Ulepszenia integracji Unreal Engine
- Debugger C++ programu Visual Studio obsługuje teraz Blueprints w Unreal Engine.
- Polecenia służące do kompilowania plików, modułów i wtyczek są dostępne natywnie w programie Visual Studio.
Nowa flaga kompilatora /forceInterlockedFunctions dynamicznie wybiera między instrukcjami załadunku i przechowywania wyłącznego Armv8.0 lub atomowymi instrukcjami Rozszerzenia Dużego Systemu Armv8.1 (LSE) na podstawie możliwości procesora w czasie wykonywania.
Dodano obsługę uzupełniania opartego na technologii IntelliSense i szybkich informacji dotyczących modułów CMake w programie Visual Studio. Możesz wyświetlić wszystkie dostępne moduły CMake, a po umieszczeniu wskaźnika myszy na odwołanym module CMake funkcja IntelliSense zawiera więcej informacji na temat wybranego modułu:
Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor jest na include (CMakePrintHelpers). IntelliSense mówi: Funkcje ułatwiające drukowanie właściwości i zmiennych, przydatne do debugowania.
Po rozpoczęciu wpisywania nazwy modułu CMake w plikach
CMakeLists.txt
lub innych plikach skryptów CMake, funkcja IntelliSense udostępnia listę dostępnych modułów do wyboru:Zrzut ekranu przedstawia edycję w pliku CMakeLists .txt. Kursor znajduje się na include (CMake). Lista rozwijana Intellisense zawiera wpisy dla CMake Add Fortran Subdirectory, CMake Dependent Option i nie tylko.
Guidelines Support Library (GSL) 4.2.0: Ta wersja zawiera ulepszenia wydajności dla
gsl::span
, nowych funkcji i lepsze dopasowanie do standardów języka C++. Aby uzyskać więcej informacji, zobacz Ogłoszenie Biblioteki Wsparcia dla Wytycznych w wersji 4.2.0.
Co nowego w języku C++ w programie Visual Studio w wersji 17.13
wydany w lutym 2025 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.13 |
Funkcje biblioteki standardowej (STL) C++26 i C++23, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Log zmian STL 17.13 |
Nowe funkcje w środowisku IDE | Notatki o wydaniu wersji 17.13 programu Visual Studio 2022 |
Aktualizacje języka C++ | aktualizacje kompilatora MSVC w programie Visual Studio 2022 17.13 |
Ulepszenia zgodności języka C++ | ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.13 |
Krótkie wyróżnienie niektórych nowych funkcji:
ulepszenia języka C++
Wypróbuj funkcje języka C++23 w wersji zapoznawczej, ustawiając standard języka C++ na
/std:c++23preview
. To ustawienie umożliwia korzystanie z najnowszych funkcji i poprawek usterek języka C++23. Aby uzyskać więcej informacji, zobacz /std (Określ wersję standardową języka).Obsługa sufiksu literału
size_t
języka C++23, która pomaga uniknąć obcinania lub niezgodności porównania ze znakiem — szczególnie podczas pisania pętli. Na przykład:// Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) { ... } // Fixed because of uz literal for (auto i = 0uz; i < v.size(); ++i) { ... }
Obsługa długości wektorów dla generowania kodu na x86 i x64. Aby uzyskać więcej informacji, zobacz /vlen.
Obsługa rozszerzeń Intel Advanced Vector Extensions 10 wersja 1. Aby uzyskać więcej informacji na temat
/arch:AVX10.1
, zobacz /arch (x64).
ulepszenia biblioteki standardowej
Obsługa standardowej biblioteki dla cukinii. W tym przykładzie z P2502R2, funkcja
fib
jest korutyną. Po wykonaniu instrukcjico_yield
fib
zostaje zawieszony, a wartość zostaje zwrócona do wywołującego. Możesz wznowić coroutinefib
później, aby wygenerować więcej wartości bez konieczności ręcznego zarządzania stanem.std::generator<int> fib() { auto a = 0, b = 1; while (true) { co_yield std::exchange(a, std::exchange(b, a + b)); } } int answer_to_the_universe() { auto rng = fib() | std::views::drop(6) | std::views::take(3); return std::ranges::fold_left(std::move(range), 0, std::plus{}); }
Przeniesiono
system_clock
,high_resolution_clock
ichrono_literals
z często dołączonego nagłówka wewnętrznego do<chrono>
. Jeśli zobaczysz błędy kompilatora wskazujące, że typy, takie jaksystem_clock
, lub literały zdefiniowane przez użytkownika, takie jak1729ms
, nie są rozpoznawane, zawrzyj<chrono>
.Ulepszono wektoryzowane implementacje konstruktorów
bitset
z ciągów,basic_string::find_last_of()
,remove()
,ranges::remove
oraz rodziny algorytmówminmax_element()
iminmax()
.Dodano wektoryzowane implementacje:
-
find_end()
iranges::find_end
dla elementów 1-bajtowych i 2-bajtowych. -
basic_string::find()
ibasic_string::rfind()
dla podciągu. -
basic_string::rfind()
dla pojedynczego znaku.
-
Połączone raporty o błędach C++23:
GitHub Copilot
Usługa GitHub Copilot Free jest teraz dostępna. Uzyskaj 2000 uzupełnień kodu i 50 żądań czatu miesięcznie bez ponoszenia kosztów.
Uzupełnianie kodu narzędzia GitHub Copilot udostępnia sugestie autouzupełniania w tekście podczas programowania. Aby ulepszyć środowisko deweloperów języka C++, narzędzie GitHub Copilot zawiera inne istotne pliki jako kontekst. Zmniejsza to błędy, oferując bardziej istotne i dokładne sugestie.
Teraz możesz zażądać przeglądu kodu z witryny GitHub Copilot w oknie Git Changes:
Okno Zmiany w Gicie jest otwarte, a przycisk Recenzja GitHub Copilot jest wyróżniony.
GitHub Copilot szuka potencjalnych problemów i tworzy dla nich komentarze:
GitHub Copilot wykrył problem w linii if (is_enabled_) new_site.disable(). Proponuje się, że może to być błąd i prawdopodobnie powinno być: if (is_enabled_) new_site.enable(), ponieważ zamiarem wydaje się być włączenie nowej witryny, jeśli punkt przerwania jest włączony.
Aby użyć tej funkcji, upewnij się, że są włączone następujące elementy:
- Narzędzia>Opcje>Podgląd funkcji>Komentarze dotyczące żądania ściągnięcia
- Narzędzia>Opcje>GitHub>Copilot>Integracja kontroli źródła>Włącz funkcje podglądu Git.
GitHub Copilot Edits to nowa funkcja, która może wprowadzać zmiany w wielu plikach w projekcie. Aby rozpocząć nową sesję Edits, kliknij Utwórz nową sesję edycji w górnej części okna czatu GitHub Copilot:
Opisz zmiany, które chcesz wprowadzić, a Copilot sugeruje odpowiednie zmiany. Możesz wyświetlić podgląd edycji jeden po jednym i zaakceptować żądane lub wprowadzić poprawki:
Usługa GitHub Copilot wyświetla podsumowanie wprowadzonych zmian, takich jak 1. Utwórz nową podklasę range_breakpoint w pliku include/libsdb/breakpoint.hpp" i 2. Zaimplementuj klasę range_breakpoint w pliku src/breakpoint.cpp. Zostanie wyświetlona opcja zaakceptowania zmian.
Aby uzyskać więcej informacji, zobacz wydajniejsze iterowanie po wielu plikach za pomocą funkcji Copilot Edits w GitHubie.
CMake
- Teraz obsługuje ustawienia wstępne narzędzia CMake w wersji 9. Nowe rozszerzenia makr w polu dołączanym danego ustawienia wstępnego. Aby uzyskać więcej informacji, zobacz Rozszerzenie makr w oficjalnej dokumentacji narzędzia CMake.
Co nowego w języku C++ w programie Visual Studio w wersji 17.12
Wydany w listopadzie 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.12 |
Funkcje biblioteki standardowej (STL) scalone funkcje C++26 i C++23, rozwiązania problemów grupy roboczej języka (LWG), ulepszenia wydajności, zachowanie rozszerzone i naprawione błędy | Dziennik zmian STL 17.12 |
Nowe funkcje w środowisku IDE programu Visual Studio 17.12 | Informacje o wersji 17.12 programu Visual Studio 2022 |
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.12 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.12 |
Krótkie wyróżnienie niektórych nowych funkcji:
-
Ulepszenia biblioteki standardowej
- Ukończono implementację zakresów formatowania języka C++23 (P2286R8). Dodano moduły formatujące dla adapterów kontenerów
stack
,queue
ipriority_queue
. - Dodano wielowymiarowe operatory indeksowania, które również obsługują
<mdspan>
. Na przykład:print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- Ukończono implementację zakresów formatowania języka C++23 (P2286R8). Dodano moduły formatujące dla adapterów kontenerów
-
Programowanie gier w języku C++
- Bezpośrednio otwórz projekty Unreal Engine w programie Visual Studio bez konieczności generowania pliku rozwiązania Visual Studio opakowującego projekt Unreal Engine. Aby uzyskać więcej informacji, zobacz Praca z projektami Unreal Engine w programie Visual Studio.
- Argumenty wiersza polecenia można określić do przekazania podczas debugowania bezpośrednio z poziomu paska narzędzi. Aby uzyskać więcej informacji, zobacz Ustawianie argumentów wiersza polecenia dla projektów Unreal Engine.
-
Wgląd w budowę
- Możesz uruchomić narzędzie Build Insights dla wybranych plików. Wybierz odpowiednie pliki w Eksplorator rozwiązań, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom szczegółowe informacje o kompilacji w wybranych plikach:
- Wyniki funkcji Build Insights można filtrować według projektu. Kliknij przycisk filtru w nagłówku kolumny filtru i wybierz projekty, dla których chcesz wyświetlić wyniki:
- Kliknięcie ikony znaku zapytania w oknie Build Insights, aby wyświetlić krótki opis kart oraz link do dokumentacji, która zawiera szczegółowe wyjaśnienie.
- Możesz uruchomić narzędzie Build Insights dla wybranych plików. Wybierz odpowiednie pliki w Eksplorator rozwiązań, kliknij prawym przyciskiem myszy i wybierz polecenie Uruchom szczegółowe informacje o kompilacji w wybranych plikach:
-
GitHub Copilot
- Możesz kliknąć pozycję Zapytaj Copilot obok wartości zmiennej, aby uzyskać wgląd w szczegółowe informacje oparte na sztucznej inteligencji, co doprowadziło do jego bieżącego stanu. Na przykład następujący program ma błąd off-by-one w warunku pętli:
Jeśli klikniesz ikonę Zapytaj Copilot dla zmiennejKod, który spowodował ten problem, to: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).
it
, zostanie wyświetlona informacja, dlaczego<NULL>
:Ten błąd znajduje się wewnątrz funkcji zdefiniowanej jako int calculate_number_of_cats(const house& h). Komunikat GitHub Copilot informuje: "Wartość wyrażenia to NULL, co oznacza, że iterator nie wskazuje na żaden prawidłowy element w wektorze animals_". W kontekście Twojego programu należy iterować przez elementy wektora animals_ w obiekcie house w celu zliczenia liczby obiektów typu Cat. Dlaczego ma wartość null. W oparciu o kontekst ustawień lokalnych i stosu wywołań: obiekt domu h ma pusty wektor animals_ (rozmiar=0). Warunek pętli it <= h.animals_.end() jest niepoprawny. Powinno to być zapisane jako != h.animals_.end().
- Możesz kliknąć pozycję Zapytaj Copilota o błędy na liście błędów programu Visual Studio, aby uzyskać pomoc dotyczącą błędu i sugerowanej poprawki. Na przykład:
Jeśli klikniesz pozycję Zapytaj Copilot, zostanie wyświetlony komunikat o błędzie:Ikona "Ask Copilot" jest podświetlona obok błędu, gdzie unique_ptr próbuje odwołać się do usuniętej funkcji.
Komunikat Copilot mówi: "Błąd występuje, ponieważ pętla oparta na zakresie próbowała skopiować obiekty std::unique_ptr, które nie są dozwolone, ponieważ nie można skopiować obiektu std::unique_ptr. Aby rozwiązać ten problem, zmieniono pętlę, aby użyć odwołania, aby uniknąć kopiowania obiektów std::unique_ptr. Dzięki temu pętla iteruje po odwołaniach do obiektów std::unique_ptr, co jest dozwolone.
-
Debugowanie
- Nowe wizualizatory debugowania dla elementów
mutex
,recursive_mutex
imove_iterator
. - Debugger wyświetla teraz zwracane wartości w wierszu:
- Nowe wizualizatory debugowania dla elementów
Co nowego w języku C++ w programie Visual Studio w wersji 17.11
Wydany w sierpniu 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.11 |
Funkcje biblioteki standardowej (STL), scalone funkcje C++26 i C++23, raporty o wadach języka C++20, rozwiązania problemów z grupą roboczą języka (LWG), ulepszenia wydajności, ulepszone zachowanie i naprawione błędy | Dziennik zmian STL 17.11 |
Nowe funkcje w środowisku IDE programu Visual Studio 17.11 | Informacje o wersji 17.11 programu Visual Studio 2022 |
Ulepszenia zgodności języka C++ w programie Visual Studio 2022 17.11 | Ulepszenia zgodności języka C++, zmiany zachowania i poprawki błędów w programie Visual Studio 2022 17.11 |
Częściowa lista nowych funkcji:
Ulepszenia biblioteki standardowej
- Zaimplementowane sformatowane wyjście teraz obejmuje
std::range_formatter
oraz formatery dlastd::pair
istd::tuple
. - Dodano obsługę dla
std::println()
bez argumentów. Spowoduje to wyświetlenie pustego wiersza zgodnie z propozycją w P3142R0. - Ulepszona wektoryzacja dla kilku algorytmów, w tym
replace_copy()
,replace_copy_if()
,ranges::replace_copy
,ranges::replace_copy_if
,find_first_of()
iranges::find_first_of
, dla elementów 8-bitowych i 16-bitowych,mismatch()
,ranges::mismatch
,count()
,ranges::count
,find()
,ranges::find
,ranges::find_last
iranges::iota
.
- Zaimplementowane sformatowane wyjście teraz obejmuje
Programowanie gier w języku C++
- Teraz można dodawać typowe szablony, moduły i wtyczki klasy Unreal Engine z poziomu programu Visual Studio. Aby uzyskać więcej informacji, zobacz Dodawanie klas, modułów i wtyczek aparatu Unreal Engine w programie Visual Studio.
- Nowy pasek narzędzi Unreal Engine zapewnia szybki dostęp do czynności związanych z silnikiem Unreal Engine w programie Visual Studio. Pasek narzędzi umożliwia szybkie łączenie się z procesami Unreal Engine, ponowne skanowanie pamięci podręcznej Blueprints, szybki dostęp do dziennika Unreal Engine i strony konfiguracji Unreal Engine dla programu Visual Studio. Aby uzyskać więcej informacji, zobacz Unreal Engine Toolbar (Unreal Engine Toolbar).
- Teraz możesz filtrować wyniki śledzenia według projektu. Ponadto wyniki w każdym wierszu pokazują ścieżkę względną i nazwę pliku zamiast pełnej ścieżki. Ulepszono również grupowanie wyników w widoku Dołączone pliki :
Widok Uwzględnionych plików zawiera nową kolumnę dla projektu. Kolumna Project (Projekt) jest zaznaczona, a wybrane są projekty, takie jak (Select All), CompilerIdC, OpenAL, common itd. Dołączone pliki są wymienione według ścieżki względnej i nazwy pliku i zgrupowane razem.
debugowanie narzędzia CMake
- Teraz możesz debugować skrypty CMake i pliki
CMakeLists.txt
w debuggerze Visual Studio dla projektów CMake, które są przeznaczone dla systemu Linux za pomocą Windows Subsystem for Linux (WSL) lub SSH. Aby uruchomić sesję debugowania CMake w programie Visual Studio, ustaw punkt przerwania w plikuCMakeLists.txt
, a następnie przejdź do Project>, a dalej Configure Cache with CMake Debugging.
- Teraz możesz debugować skrypty CMake i pliki
GitHub Copilot
- Po umieszczeniu wskaźnika myszy na symbolach w edytorze kodu kliknij przycisk Copilot Tell me more (Pokaż mi więcej ) w oknie dialogowym Szybkie informacje, aby dowiedzieć się więcej o danym symbolu:
Okno Szybkie informacje jest wyświetlane powyżej funkcji. Link Powiedz mi więcej jest wyróżniony.
- GitHub Copilot może generować sugestie nazewnictwa identyfikatorów (zmiennych, metod lub klas) na podstawie sposobu użycia identyfikatora i stylu kodu.
Okno dialogowe Zmienianie nazwy zawiera pole Nowa nazwa z listą rozwijaną pokazującą następujące opcje: text_color, font_color, display_color, console_color i menu_text_color.
Potrzebna jest aktywna subskrypcja narzędzia GitHub Copilot. Kliknij prawym przyciskiem myszy zmienną, której nazwę chcesz zmienić, a następnie wybierz polecenie Zmień nazwę (
Ctrl+R
,Ctrl+R
). Wybierz ikonę GitHub Copilot sparkle, aby wygenerować sugestie dotyczące nazewnictwa.Debugowanie
- Warunkowe punkty przerwania w języku C++ są szybsze.
Ulepszenia diagnostyki
- Ulepszona diagnostyka podczas wywoływania
std::get<T>
dlastd::tuple
, który ma wiele wystąpieńT
w argumentach szablonu. MSVC kiedyś raportował:
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Teraz raportuje:
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Ulepszona diagnostyka, jeśli
std::ranges::to
nie może skonstruować żądanego wyniku. MSVC kiedyś raportował:
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Teraz raportuje:
error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'
- Ulepszona diagnostyka podczas wywoływania
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 z grupą roboczą języka (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 sposobów, w jakie to wpływa na projekty zakładające, że wszystkie wersje MSVC to 19.3X dla wydań Visual Studio 2022, zobacz Minor Version Number 14.40 w zestawie narzędzi MSVC w VS 2022 v17.10.
-
Ulepszenia biblioteki standardowej: biblioteka standardowa dodała obsługę formatowania wskaźników P2510R3, co przybliża zestaw specyfikatorów formatu dla wskaźników do tych, które już istnieją dla liczb całkowitych przy użyciu
std::format
. Ulepszono wektoryzowane implementacje elementówstd::min_element
,std::ranges::min
i pokrewnych. - Szczegółowe informacje o kompilacji: teraz udostępnia informacje o tworzeniu wystąpienia szablonu. Zobacz Widok szablonów dla Build Insights w programie Visual Studio lub nagranie Pure Virtual C++ - Widok szablonów dla 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órą można włączyć za pomocą Narzędzia>Opcje>Unreal Engine.
- Nowe funkcje dla systemu Linux: zobacz Nowe funkcje programistyczne systemu Linux w programie Visual Studio.
- Obiekty docelowe CMake: można teraz przypiąć obiekty docelowe w widoku obiektów docelowych CMake.
- UX Menedżera Połączeń: Doświadczenie użytkownika zapewnia bardziej płynne działania 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 pull request: 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 Opcje>Środowisko>Podgląd funkcji i wyewidencjonuj gałąź żądania ściągnięcia, aby rozpocząć pracę.
- Zawartość wygenerowana przez sztuczną inteligencję: Narzędzie GitHub Copilot może teraz tworzyć wersje robocze opisów próśb ściągnięcia. Wymaga aktywnej subskrypcji narzędzia GitHub Copilot. Wypróbuj, klikając ikonę Dodaj opis żądania ściągnięcia wygenerowany przez AI z ikoną pióra w oknie Tworzenia żą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 500 pikseli szerokości i wysokości.
Wskaźnik myszy znajduje się na linii std::filesystem::path 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łącz do procesu: Funkcjonalność okna dialogowego Dołącz do procesu jest bardziej przyjazna dla użytkownika. Teraz można łatwo przełączać się między widokiem drzewa i widokiem listy, lepiej organizować procesy za pomocą zwijanych sekcji oraz wybierać typy kodu z uproszczonym polem rozwijanym. Ponadto funkcja "Wybieranie/śledzenie okna" jest teraz łatwiejsza w użyciu, umożliwiając śledzenie dwukierunkowe: wybranie procesu wyróżnia jego okno, a kliknięcie okna powoduje wybór jego procesu.
-
Integracja z rozwiązaniem GitHub Copilot: rozszerzenia GitHub Copilot i Copilot Chat są teraz ujednolicone i teraz dostarczane bezpośrednio w programie Visual Studio. Aby go zainstalować, zainstaluj składnik GitHub Copilot w Instalator programu Visual Studio:
Interfejs GitHub Copilot znajduje się w prawym górnym rogu programu Visual Studio. Aby go używać, potrzebujesz aktywnej subskrypcji usługi GitHub Copilot.
Przycisk GitHub Copilot jest wyświetlany w prawym górnym rogu programu Visual Studio. Dostępne są opcje otwierania okna czatu, ustawienia 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 scalone w bibliotece standardowej C++23 (STL), poprawiona wydajność, cechy ulepszonego zachowania, rozwiązania problemów Grupy Roboczej Języka (LWG) oraz usunięte 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 umożliwia szczegółową analizę#include
dyrektyw. Aktywuj tę funkcję, klikając prawym przyciskiem myszy na#include
i wybierając #include directives>, a następnie Włącz diagnostykę dyrektyw #include. Nad każdym#include
znajduje się liczba razy, ile razy twój kod odwołuje się do tego pliku#include
. Kliknij link odwołania, aby przejść do miejsca, gdzie Twój kod używa czegoś z tego pliku nagłówkowego. Aby wyświetlić czas kompilacji#include
dyrektyw, uruchom Build Insights, przechodząc do Kompilacja>Uruchom Build Insights dla rozwiązania>Kompilacja.Powyżej pliku #include znajduje się link referencyjny oraz wiele odwołań do tego pliku include (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. Najedź kursorem na typ i wybierz link Układ pamięci w Szybkie informacje, aby otworzyć dedykowane okno wyświetlające układ pamięci wybranego typu. Najechanie kursorem na poszczególne typy danych w tym oknie dostarcza szczegółowych informacji o ich rozmiarze i przesunięciu w obrębie danego 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 Point dla lokalizacji głowy i ciała, punktacji itd.
- Teraz możesz określić własny 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 Narzędzia>Opcje i wybierz CMake>Ogólne. Wybierz pozycję Włącz niestandardowy plik wykonywalny narzędzia CMake i określ ścieżkę katalogu pliku wykonywalnego narzędzia CMake.
Okno dialogowe opcji CMake z wyróżnioną opcją "Włącz niestandardowy plik wykonywalny CMake" i pole "Katalog dla plików wykonywalnych CMake".
- Ulepszone IntelliSense dla projektów Unreal Engine.
- Ulepszona obsługa języka C++23:
std::format
istd::span
formattable
,range_format
,format_kind
, orazset_debug_format()
w ramach P2286R8 Formatowanie zakresów<mdspan>
zgodnie z P0009R18 i kolejnymi zmianami w sformułowaniach, które zostały wprowadzone do standardu C++23. Ponadto,format()
można formatować wskaźniki za pomocą 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 z grupą roboczą języka (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:
- Ustrukturyzowana diagnostyka błędów języka C++ w oknie danych wyjściowych oraz 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, unii, typów bazowych lub wyliczeń jeszcze przed skompilowaniem kodu. Najedź wskaźnikiem myszy na identyfikator, aby wyświetlić informacje o rozmiarze i wyrównaniu.
- Funkcja sugerująca, kiedy oznaczyć funkcje członkowskie
const
, ponieważ nie modyfikują stanu obiektu. Najedź na funkcję składową 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 wygaszonym dołączeniu i użyć menu żarówki, aby usunąć to dołączenie lub wszystkie nieużywane dołączenia. 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 Unreal Engine
- Adapter testowy Unreal Engine umożliwia odnajdywanie, uruchamianie, zarządzanie i debugowanie testów Unreal Engine 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 członków.
- 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 inliningiem funkcji w czasie kompilacji i Samouczek: rozwiązywanie problemów ze wpływem plików nagłówkowych na trwanie kompilacji.
- Zdalna obsługa testów jednostkowych systemu Linux teraz umożliwia uruchamianie testów CTest i GTest na zdalnych maszynach z systemem Linux z Eksploratora testów w programie 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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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 sesje debugowania i szybsze ładowanie projektów
- Szczegółowe wizualizacje rozszerzania makr
- Jednoklikowe pobieranie Podsystemu 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 Blueprints 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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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)
- Przeglądarka dziennika Unreal Engine
- 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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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::forward
,std::move_if_noexcept
istd::forward_like
teraz nie generują wywołań funkcji w wygenerowanym kodzie, 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]]
. 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ą za pomocą opcji/experimental:c11atomics
w trybie/std:c11
lub późniejszym.Dodano nowy zestaw eksperymentalnych kontroli o wysokim poziomie pewności do narzędzia do sprawdzania długości życia obiektu w celu zredukowania hałasu.
Nowa funkcja w wersji zapoznawczej, Remote Eksplorator Plików, umożliwia wyświetlanie katalogu plików na maszynach zdalnych w programie VS oraz wysyłanie i pobieranie do niego plików.
Zmieniono wersjonowanie plików wykonywalnych CMake dostarczanych z programem Visual Studio, aby pasowały do wersji Kitware.
Dodano obsługę Hot Reload do szablonu projektu CMake.
Przejdź do definicji w C++ teraz używa bardziej subtelnego wskaźnika operacyjnego czasu, zastępując modalne okno dialogowe w poprzednich wersjach.
Rozpoczęto wdrażanie eksperymentu dostarczającego bardziej inteligentne wyniki w autouzupełnianiu i na liście 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 Image Watch (to rozszerzenie jest dostępne w Marketplace i nie jest dołączone do Instalatora 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 rekurencyjne rozszerzanie w większej liczbie kontekstów i dodaliśmy opcje w wyskakującym oknie, aby skopiować rozszerzenie do schowka lub rozszerzyć makro bezpośrednio.
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 celów do skompilowania w widoku celów 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
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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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, aby wyprowadzić ustrukturyzowaną diagnostykę SARIF do określonego katalogu.Dodano obsługę atrybutów C23 do funkcji IntelliSense oraz postępy we wsparciu dla modułów C++20.
Zwiększona wydajność indeksowania podczas otwierania nowego rozwiązania. Duże projekty mogą odnotować poprawę o 20-35% w stosunku do 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 pod
/Od
, jeśli użytkownik przekaże opcję/Zc:nrvo
, lub/std:c++20
lub nowszą, lub/permissive-
. - Teraz możesz wyłączyć funkcję NRVO przy użyciu opcji
/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 wydaniu LLVM i Clang.
Dodano obsługę artefaktów vcpkg w projektach CMake w programie Visual Studio. 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
/Yu
i wymuszony za pośrednictwem/FI
, IntelliSense zawsze przetwarzała go jako pierwszy, przed wszystkimi innymi nagłówkami zawartymi za pośrednictwem/FI
. To zachowanie nie było zgodne z działaniem wersji kompilacyjnej. 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 tego, co jest dostępne, zobacz uwagi do wydania 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()
,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 poprzez dodanie
/std:c++latest
do opcji 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).
P2440R1
ranges::iota
,ranges::shift_left
,ranges::shift_right
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 zawierają teraz wersje Arm64 narzędzi CMake i Ninja.
Dodano obsługę presetów CMake w wersji 4. Aby uzyskać szczegółowe informacje na temat tego, co jest dostępne, zobacz uwagi do wydania 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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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 Instalatorze programu Visual Studio w obciążeniu Programowanie gier w języku C++ wybrano obsługę środowiska IDE dla Unreal Engine. Podczas pracy nad projektem UE kliknij prawym przyciskiem myszy wewnątrz projektu lub folderu/filtru i wybierz polecenie Dodaj>klasę UE.
- Przejdź do definicji teraz zapamiętuje poprzednią sygnaturę i nawiguje odpowiednio, gdy lepsze dopasowanie jest niedostępne (na przykład po ręcznej zmianie sygnatury jednego z elementów). Reaktywność funkcji Przejdź do wszystkich została ulepszona. Wcześniej wyniki pojawiły się po zatrzymaniu wpisywania. W nowym środowisku wyniki są wyświetlane podczas wpisywania.
- W kontekstach wymagających ukończenia typu
enum
(na przykład przypisania do zmiennychenum
, etykiet przypadków, zwracania typówenum
itd.) lista autouzupełniania jest teraz filtrowana tylko do pasujących wyliczeń 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 rozwiązaniami w kontekście narzędzia vcpkg dla scenariuszy innych niż MSBuild, aby dodać dodatkową funkcjonalność.
- Dodano okno Monitora szeregowego do programowania osadzonego, dostępne przez Debugowanie>Windows>Monitor szeregowy.
- 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ępnych funkcjach, zobacz uwagi do wydania LLVM i uwagi do wydania Clang.
- Zaktualizowano równoległy 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 dotyczące pracy z modułami C++ w edytorze. Nieustannie pracujemy nad poprawą jakości doświadczenia, ale zachęcamy do wypróbowania funkcjonalności 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 |
Biblioteka standardowa (STL) zintegrowała raporty dotyczące usterek C++20, funkcje C++23, rozwiązania problemów Grupy Roboczej ds. Języka (LWG), ulepszenia wydajności, poprawione zachowanie oraz 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
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, które można przełączać, naciskając Alt+F1 lub dwukrotnie naciskając 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 rejestrów urządzeń peryferyjnych i RTOS dla programistów systemów wbudowanych. 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 pod opcją
/std:c++20
. Aby uzyskać więcej informacji na temat wdrożonych backportów, zobacz vs 2022 Changelog w repozytorium Microsoft/STL GitHub oraz wpis w blogu STL/std:c++20
STL STL MSVC. - Dodaliśmy różne funkcje biblioteki języka C++23 dostępne w opcji
/std:c++latest
. Aby uzyskać więcej informacji na temat nowych funkcji, zobacz dziennik zmian STL Repo. - Ulepszono wydajność początkowego indeksowania w C++ nawet o 20%, w zależności od głębokości grafu zależności.
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 C++23 scalone z biblioteką standardową (STL), decyzje dotyczące rozwiązania problemów Grupy Roboczej Języka (LWG), poprawa wydajności, lepsza funkcjonalność 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ć zrzuty pamięci na zdalnym systemie macOS za pomocą programu Visual Studio oraz narzędzi LLDB lub GDB.
- Wersje
Clang
iLLVM
dostarczane z Visual Studio są uaktualniane do wersji 13. - Integracja z CMake w Visual Studio jest aktywna tylko wtedy, gdy element
CMakeLists.txt
jest rozpoznawany w katalogu głównym otwartego obszaru roboczego. Jeśli elementCMakeLists.txt
zostanie zidentyfikowany na innym poziomie obszaru roboczego, zostaniesz poproszony o aktywowanie integracji CMake z Visual Studio za pomocą powiadomienia. - Nowe widoki, które umożliwiają inspekcję i interakcję z rejestrami peryferyjnymi na mikrokontrolerach oraz obiektami systemów operacyjnych czasu rzeczywistego (RTOS), dostępne poprzez Debug>Windows>Embedded Registers.
- Dodano nowy widok wątków dla projektów RTOS, dostępny za pośrednictwem Debug i Windows oraz RTOS Objects. 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 z cechami C++23 i C++26, raporty z defektami C++20, rozwiązania kwestii zgłaszanych przez Language Working Group (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 używa skrótu SHA-256 dla ź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 samodzielnych narzędziach kompilacji
.
Dynamiczne przeładowywanie dla natywnego C++
- Hot Reload dla C++ umożliwia wprowadzanie wielu rodzajów poprawek w kodzie działającej aplikacji i ich zastosowanie bez potrzeby przerywania jej działania za pomocą punktu 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 doświadczenie jest obsługiwane przez funkcję Edytuj 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 funkcji w tej wersji, zobacz notatki 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.Teraz Visual Studio obsługuje opcję
buildPresets.targets
wCMakePresets.json
. 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
Wybrane ulepszenia biblioteki standardowej (STL) wyróżniono 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 poprawienia sposobu wyświetlania następujących typów:
source_location
,bind_front()
,u8string
(i ich iteratorów),default_sentinel_t
,unreachable_sentinel_t
,ranges::empty_view
,ranges::single_view
,ranges::iota_view
(i jego iteratora/strażnika),ranges::ref_view
,thread
,thread::id
,jthread
ifilesystem::path
. - Dodano
[[nodiscard]]
do rodziny funkcji wstoi()
oraz do różnych funkcji w<string>
, takich jak funkcje składowe<locale>
,collate
, oraz rodzinyhas_facet()
iisalnum()
tolower()
. -
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ą właściwość standardowej biblioteki C++, która wykrywa, czy typ jest wyliczeniem o określonym zakresie. -
out_ptr()
P1132R7 ,inout_ptr()
-
P1679R3
contains()
dlabasic_string
ibasic_string_view
-
to_underlying()
P1682R3 dla wyliczeń -
P2162R2 Zezwalaj na dziedziczenie z
std::variant
- P2166R1 Zakaz konstruowania i
basic_string
zbasic_string_view
. 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ę odśmiecania pamięci. Ta zmiana usuwa
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
,get_pointer_safety
. Wcześniej te funkcje nie miały wpływu.
Wyróżnione ulepszenia wydajności
-
<format>
teraz wykrywa, kiedy zapisuje do obiektuback_insert_iterator
dlabasic_string
lubvector
, i wykonuje szybsze wywołanie doinsert()
naend()
kontenera. - Poprawiliśmy wydajność
std::find()
istd::count()
dlavector<bool>
19-krotnie i 26-krotnie (razy, a nie procent). - Poprawiliśmy wydajność
std::count()
dlavector<bool>
-
std::byte
ma taką samą wydajność jakunsigned char
wreverse()
ivariant::swap()
Obsługa oprogramowania Clang i LLVM
Narzędzia LLVM dostarczane z programem Visual Studio zostały zaktualizowane do wersji LLVM 12. Aby uzyskać więcej informacji, zobacz notatki o wydaniu LLVM.
Obsługa Clang-cl została zaktualizowana do LLVM 12.
Teraz można debugować procesy uruchomione w systemie zdalnym z poziomu programu Visual Studio przy użyciu usługi LLDB.
C++ AMP uznane za przestarzałe
- 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 dotyczące wycofywania AMP.
Ulepszenia funkcji IntelliSense
- Wprowadziliśmy ulepszenia w funkcjonalności IntelliSense dla języka C++ w zakresie nawigacji i wyróżniania składni dla typów z zaimportowanych modułów oraz jednostek nagłówkowych. 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++ poprzez optymalizację wykorzystania pamięci podręcznej nagłówków oraz dostępu do bazy danych symboli, co zapewnia lepsze czasy ładowania umożliwiające szybsze przystąpienie do pracy nad kodem.
- Funkcja Linter kodu IntelliSense dla języka C++ jest teraz domyślnie włączona, zapewniając błyskawiczne sugestie podczas wpisywania oraz propozycje poprawek typowych błędów 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 .
- Obciążenie Tworzenie gier przy użyciu C++ instaluje teraz najnowszy Unreal Engine z obsługą Visual Studio 2022.
Ulepszenia analizy kodu
- Analiza kodu teraz wymusza, że wartości zwracane przez funkcje z adnotacjami
_Check_return_
lub_Must_inspect_result_
muszą być sprawdzane. - Wykrywanie dereferencji wskaźnika null zostało ulepszone w naszych narzędziach do analizy kodu.
- Dodano obsługę analizy
gsl::not_null
kodu. - Obsługa biblioteki Libfuzzer w ramach opcji kompilatora
/fsanitize=fuzzer
.
Informacje o wydaniach dla starszych wersji
Dostępne są również informacje o wersji dla 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 to 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ę, korzystając z ikony "Wyślij opinię" w prawym górnym rogu instalatora lub środowiska IDE programu Visual Studio albo wybierając Pomoc, a następnie Wyślij opinię. 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.