Visual Studio 2022 中 C++ 的新功能

Visual Studio 2022 為 Microsoft C++ 編譯程式和工具帶來了許多更新和修正。 Visual Studio IDE 也大幅改善效能和生產力,現在以 64 位應用程式原生方式執行。

Visual Studio 17.9 版中 C++ 的新功能

簡言之,一些新功能如下:

  • #include 診斷,提供指示 #include 詞的詳細分析。 以滑鼠右鍵按兩下 #include ,然後選擇 #include [開啟 #include 指示詞>診斷] 來啟用此功能。 以上是 #include 程式代碼參考該 #include 檔案的次數。 按兩下參考連結,瀏覽至程式代碼使用該標頭檔的內容。 若要檢視指示#include詞的建置時間,請流覽至 [在方案>組建上建>置執行組建深入解析] 來執行 Build Insights。

    Screenshot of #include diagnostics

    上方的 # include 是 **reference** 連結,以及此 #include 檔案的一些參考(在此案例中為 1)。 建置時間也會列出 (在此案例中小於 1/2 秒)。

  • 記憶體配置視覺效果,其中顯示如何為您的類別、結構及等位排列記憶體。 將滑鼠停留在類型上,然後選擇 [快速資訊] 中的 [記憶體配置] 連結,以開啟顯示所選類型的記憶體配置專用視窗。 將滑鼠停留在此視窗中的個別資料類型上,提供類型中其大小和位移的詳細資訊。

    Screenshot of the memory layout window

    記憶體配置視窗會顯示蛇類的內容。 它會顯示類別之各種欄位的記憶體位移,例如 Head 和 body 位置的 Point 類別、分數等等。

  • 您現在可以指定自己的自訂 CMake 可執行檔案。 如果您想要使用未隨附於 Visual Studio 的特定 CMake 版本,這項功能會很有用。 流覽至 [工具>選項],然後選取 [CMake>一般]。 選取 [ 啟用自定義 CMake 可執行檔案 ],然後指定 CMake 可執行檔案的目錄路徑。

    Screenshot of the CMake options dialog

    已醒目提示 [啟用自定義 CMake 可執行檔案] 選項和 [CMake 可執行檔案目錄] 欄位的 CMake 選項對話框。

  • 改善 Unreal Engine 專案的 IntelliSense。
  • 改善的 C++23 支援:std::formatstd::spanformattable、、 format_kindrange_formatset_debug_format(),是每個P0009R18和後續套用至 C++23 Standard 之格式化範圍<mdspan>P2286R8範圍的一部分。 此外, format() 也可以為每個 P2510R3設定指標的格式。

如需 C++ 後端更新的摘要,請參閱 自 Visual Studio 2022 17.3 版以來的 MSVC 後端更新。

如需 Visual Studio 17.9 IDE 新功能的摘要,請參閱 Visual Studio 2022 17.9 版版本資訊

Visual Studio 17.8 版中 C++ 的新功能

簡言之,一些新功能如下:

  • [輸出] 視窗中的 C++ 結構化診斷,以及提供錯誤詳細資訊的新問題詳細資料視窗。 如需詳細資訊,請參閱 結構化 SARIF 輸出問題詳細數據視窗
  • 一項功能,可讓您在編譯程序代碼之前,將類別、結構、等位、等位、基底類型或列舉的大小和對齊方式可視化。 將滑鼠停留在標識碼上,而 [快速諮詢] 會顯示大小和對齊資訊。
  • 建議何時標記成員函 const 式的功能,因為它們不會修改物件的狀態。 將滑鼠停留在成員函式上,然後按兩下燈泡圖示,將函式標示為 const
  • Visual Studio 現在會提示您透過函式名稱所顯示的螺絲起子圖示,將全域函式標示為靜態。 按兩下螺絲起子圖示,將函式標示為靜態。
  • 未使用的 #include 指示詞會在編輯器中呈現暗灰色。 您可以將滑鼠停留在暗灰色的 Include 上,並使用燈泡菜單來移除包含或所有未使用的 include。 您也可以新增 #include 透過其他標頭間接包含之實體的指示詞。 如需詳細資訊,請參閱 清除 Visual Studio 中的 C/C++ 包含。
  • 更多 Unreal Engine 支援:
    • Unreal Engine 測試配接器可讓您探索、執行、管理及偵錯 Unreal Engine 測試,而不需要離開 Visual Studio IDE。
    • 使用 Unreal Engine 代碼段,您可以在成員清單中找到常見的 Unreal Engine 建構為代碼段。
    • Build Insights 現在已與 Visual Studio 2022 整合,並使用 MSVC 與 MSBuild 和 CMake 專案搭配使用。 您現在可以查看函式編譯的其他資訊,例如編譯所花費的時間和 ForceInlines 的數目。
  • 遠端 Linux 單元測試支援現在可讓您從 Visual Studio 的測試總管,在遠端 Linux 機器上執行 CTest 和 GTest 測試,就像本機測試一樣。

如需 Visual Studio 17.8 中新 C++ 功能的完整摘要,請參閱 Visual Studio 2022 17.8 中 C++ 開發人員的新功能。

如需 Visual Studio 17.8 IDE 新功能的摘要,請參閱 Visual Studio 2022 17.8 版版本資訊

Visual Studio 17.7 版的 C++ 新功能

如需 Visual Studio 17.7 中 C++ 功能的新摘要,請參閱 Visual Studio 2022 17.7 中 C++ 開發人員的新功能。

簡言之,一些新功能如下:

  • 更快速的偵錯會話和更快的專案載入時間
  • 宏擴充的逐步視覺效果
  • 單鍵下載 Windows 子系統 Linux 版 (WSL)
  • 改善對 Doxygen 批注的支援
  • 適用於遊戲開發的 C++ Build Insights
  • 已為 C 編譯程式新增 /std:clatest
  • Unreal Engine 專案改善,例如更快的 IntelliSense 和語法顏色標示、尋找所有 Unreal Engine 藍圖參考的能力等等。

如需遊戲開發專屬的新 C++ 功能摘要,請參閱 釋放 Visual Studio 2022 for C++ 遊戲開發的威力

如需 Visual Studio 17.7 IDE 新功能的摘要,請參閱 Visual Studio 2022 17.7 版版本資訊

Visual Studio 17.6 版中 C++ 的新功能

如需 Visual Studio 17.6 中 C++ 功能的新摘要,請參閱 Visual Studio 2022 17.6 中 C++ 開發人員的新功能。

簡言之,一些新功能包括:CMake 腳本偵錯、高階底紋語言的內建支援(HLSL)、Unreal 引擎記錄查看器、C++/CLI 專案中的 C++20 初始支援、VCPKG 預設會新增,以及一些適用於範圍的 C++23 標準連結庫功能。 若要查看新增至標準連結庫之新功能的完整清單,請參閱 STL 變更記錄

如需 Visual Studio 17.6 IDE 新功能的摘要,請參閱 Visual Studio 2022 17.6 版版本資訊

Visual Studio 17.5 版的 C++ 新功能

如需 17.5 版 Visual Studio 中新的 C++ 功能摘要,請參閱 Visual Studio 2022 17.5 中 C++ 開發人員的新功能。 如需 Visual Studio IDE 17.5 版新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.5 版版本資訊

  • std::movestd::forwardstd::move_if_noexceptstd::forward_like 現在不會在產生的程式代碼中產生函數調用,即使在偵錯模式中也是如此。 這項變更可避免具名轉換在偵錯組建中造成不必要的額外負荷。 /permissive- (或暗示它的選項,例如 /std:c++20std:c++latest)是必要的。

  • 已新增 [[msvc::intrinsic]] 以支援上述項目。 您可以將這個屬性套用至由單一轉換組成的非遞歸函式,而該函式只接受一個參數。

  • 已在整合式終端機中新增 Linux 控制台的支持,允許終端機 I/O。

  • 已新增對 C11 不可部分完成基本型別 (<stdatomic.h>) 的初始實驗性支援。 您可以使用 模式或更新版本中的選項/std:c11來啟用此實驗功能/experimental:c11atomics

  • 已將一組實驗性高信賴檢查新增至存留期檢查程式,以降低雜訊。

  • 新的預覽功能遠端 檔案總管 可讓您在 VS 內的遠端電腦上檢視檔案目錄,並將檔案上傳並下載至該檔案。

  • 已變更 Visual Studio 隨附的 CMake 可執行檔版本設定,以符合 Kitware 版本。

  • 已將熱重新載入的支援新增至 CMake 專案範本中。

  • 移至 C++ 的定義現在會使用更微妙的作業指標,而需要更多時間,取代舊版的強制回應對話方塊。

  • 開始推出實驗,在 C++ 自動完成和成員清單中提供更聰明的結果。 這項功能先前稱為預測性 IntelliSense,但現在會使用新的呈現方法。

  • 現在,我們隨 LLVM 工作負載一起提供了原生 Arm64 Clang 工具組,以允許在 Arm64 機器上進行原生編譯。

  • 已將當地語系化新增至影像監看延伸模組(此延伸模組可在 Marketplace 中使用,且不會透過 Visual Studio 安裝程式 配套)。

  • 已新增在目前執行中的開發人員容器中開啟終端機視窗的支援。

  • 已對 IntelliSense 巨集擴充內容進行了數項改進。 值得注意的是,我們在更多情境中啟用了遞迴擴充內容,並將選項新增至快顯視窗中,以將擴充內容複製到剪貼簿或在行內展開巨集。

  • 「序列監視器」現在支援並行監視。 並行監視可讓您同時監視多個埠。 按下加號按鈕以開啟另一個序列監視器並開始使用。

  • 現在,您可以在不離開 Visual Studio 的情況下檢視在 Unreal Blueprint 資產中所修改的基類屬性。 在 Visual Studio 中,按兩下 Blueprint 中的 C++ 類別或屬性參考,以開啟 UE Asset Inspector。

  • 已允許在遠端 Linux 電腦上執行 DevContainers。

  • 已允許在 [CMake 目標] 檢視中選取要建置的多個目標。

  • 已新增對 CMakePresets.json 第 5 版的支援。 如需新功能的資訊,請參閱 CMake 文件

  • 已啟用 [測試總管],以便以平行方式建置及測試多個 CMake 目標。

  • 已將 [在終端機中開啟容器] 選項新增至 [開發容器]。

  • 實作的標準連結庫功能:

    • P2508R1basic_format_stringformat_stringwformat_string
    • ranges::fold_leftP2322R6、 ranges::fold_right等等。
    • views::zip P2321R2 (不包含zip_transformadjacentadjacent_transform

Visual Studio 17.4 版的 C++ 新功能

如需 Visual Studio 17.4 版中新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.4 版版本資訊Visual Studio 2022 17.4 中 C++ 開發人員的新功能。

  • 已改善編譯器錯誤訊息,以提供更正確且有用的資訊,尤其是概念。

  • 已新增實驗性 MSVC 選項/experimental:log<directory>,將結構化 SARIF 診斷輸出至指定的目錄。

  • 已將 C23 屬性的支援新增至 IntelliSense,並在 C++20 模組支援中持續進行。

  • 已改善開啟新解決方案時的編製索引效能。 從 17.3 起大型專案可能會改善 20-35%。

  • 已改善具名傳回值優化 (NRVO):

    • 針對涉及例外狀況處理或迴圈的案例,會啟用 NRVO。
    • 即使 /Od 使用者通過 /Zc:nrvo 選項或 /std:c++20 更新版本,或更新版本或 ,還是 /permissive-,仍會啟用NRVO。
    • 您現在可以使用 /Zc:nrvo- 選項停用 NRVO。
  • Visual Studio 隨附的 CMake 版本已升級為 15.0.1。 如需可用項目的詳細資訊,請參閱 LLVMClang 版本資訊。

  • 已使用 CMake 專案新增對 Visual Studio for vcpkg 成品的支援。 對於包含 vcpkg 指令清單的項目,環境會在項目開啟時自動啟動。 在 Visual Studio 部落格文章中的 vcpkg 環境啟用中深入瞭解此功能。

  • 您現在可以針對 C++ 專案使用開發容器。 在我們的適用於 C++ 的開發人員容器部落格文章中深入瞭解此功能。

  • 當其中一個標頭是 PCH 時,IntelliSense 現在會遵守排除標頭的順序。 先前,透過 /Yu 使用 PCH 並透過 /FI 強制包含時,IntelliSense 一律會先處理,然後再處理透過 /FI 包含的任何其他標頭。 此行為不符合建置行為。 使用此變更時, /FI 標頭會依指定的順序進行處理。

  • 已從測試總管的 CTest 名稱中移除內部前置詞。

  • 已將隨附於 Visual Studio 的 CMake 版本更新到 3.24.1 版。 如需可用專案的詳細資訊,請參閱 CMake 版本資訊

  • Android SDK 更新:

    • 已移除 Ant 文稿,因此使用者在 [新增專案] 對話方塊中不再看到以 Ant 為基礎的範本。 如需從 Ant 範本移轉至 Gradle 樣本的說明,請參閱 從 Apache Ant 移轉組建
    • 已使用 NDK 23 和 24 新增對建置的支援
    • 已將 NDK 元件更新為 LTS 第 23 版
  • 已新增 ranges::min_element()ranges::max_element()ranges::minmax_element() 的向量化實作

  • 我們持續追蹤 C++ 標準化的最新開發。 您可以在編譯程式選項中包含 下列 /std:c++latest C++23 功能支援:

    • P2302R4ranges::containsranges::contains_subrange

    • P2499R0範圍建構函式string_view 應該是 explicit

    • auto(x)P0849R8:語言中的衰變複製

      (尚未實作編譯程式元件。當最初實作 Ranges 支援時,連結庫元件是以 C++20 模式實作。

    • P0881R7<stacktrace>

    • P2301R1std::stacktrace 新增 pmr 別名

    • P1328R1constexpr type_info::operator==()

    • P2440R1ranges::iotaranges::shift_leftranges::shift_right

    • P2441R2views::join_with

  • 已新增 [建立宣告/定義之後流覽] 選項,讓您選擇 [建立宣告/定義] 功能的瀏覽行為。 您可以在瞄核 (預設值) 或開啟文件或沒有瀏覽之間選取。

  • Visual Studio 的 Arm64 組建現在會組合 Arm64 版本的 CMake 和 Ninja。

  • 已新增 CMake 預設第 4 版的支援。 如需可用專案的詳細資訊,請參閱 CMake 版本資訊

  • 使用 連線 ion Manager遠端系統連線現在支援 SSH ProxyJump。 ProxyJump 可用來透過另一個 SSH 主機存取 SSH 主機(例如,存取防火牆後方的主機)。

Visual Studio 17.3 版中 C++ 的新功能

如需 Visual Studio 17.3 版新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.3 版版本資訊C++ 改善

  • Arm64EC 工具鏈已不再標示為實驗性,且已準備好用於生產環境。

  • Visual Studio 終端機現在可做為具有預存 SSH 連線的 SSH 用戶端。 安裝適用於Linux工具的 C++ 後,開啟終端機工具視窗。 終端機下拉式清單會填入您的預存連線。 當您選取連線時,會在 Visual Studio 內開啟新的 [終端機] 視窗,以顯示遠端系統上的虛擬終端機。 控制字元、色彩和游標位置感知全都支援。

  • Visual Studio 現在可為您的 UE 專案新增 Unreal Engine 類別範本。 若要嘗試這項功能,請確定在遊戲開發中使用 C++ 工作負載在 Visual Studio 安裝程式 中選取 Unreal Engine 的 IDE 支援。 當您使用 UE 專案時,以滑鼠右鍵按兩下項目或資料夾/篩選,然後選取[新增>UE 類別]。

  • 移至 [定義 ] 現在會記住先前的簽章,並在較佳的相符項目無法使用時據以巡覽(例如,在您手動變更其中一對的簽章之後)。 Go To All回應性已改善。 之前,結果會出現在您停止輸入之後。 在新的體驗中,結果會顯示在您輸入時。

  • 在需要 enum 完成類型的內容中(例如,變數 enum 、案例標籤、傳 enum 回型別等等的指派),自動完成清單現在只會篩選成相符的列舉值和相關建構。

  • 已新增以 .NET Core 為目標的 C++/CLI MSBuild 專案的 NuGet PackageReference 支援。 這項變更是為了解除封鎖混合程式碼基底,使其無法採用 .NET Core。 此支援不適用於其他 C++ 項目類型或任何以 .NET Framework 為目標的 C++ 項目類型。 沒有計劃將 PackageReference 支援延伸至其他 C++ 案例。 小組正針對非 MSBuild 案例處理涉及 vcpkg 的不同體驗,並新增更大的功能。

  • 已新增用於內嵌開發的序列監視器視窗,可透過偵>錯 Windows>序列監視器取得。

  • 相較於 17.2,C++ 索引編制已改善 ~66%。

  • 已將隨附於 Visual Studio 的 CMake 版本更新到 3.23 版。 請參閱 CMake 3.23 版本資訊,以了解可用功能的詳細資料。

  • Visual Studio 隨附的 CMake 版本已升級為第 14 版。 如需可用項目的詳細資訊,請參閱 LLVMClang 版本資訊。

  • 將並存 Dev 16.11 C++ 工具組更新為 14.29.30145.00 版。 最新版的 Dev 16.11 C++ 工具組包含重要的錯誤修正,包括修正所有剩餘的 C++20 瑕疵報告。 如需 Bug 修正的詳細資訊,包括 Dev 16.11 中的 C++20 瑕疵報告,請參閱 Visual Studio 2019 16.11.14 版版本資訊

  • 對 C++ 模組的編輯器內體驗進行了各種改善。 我們持續努力改善體驗的品質,但鼓勵您在 17.3 中試用。 透過 開發人員社群 回報剩餘的問題。

Visual Studio 17.2 版中 C++ 的新功能

如需 Visual Studio 17.2 版新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.1 版版本資訊

  • 已新增 C++23 功能 推斷 this的編譯程序支援,可在 選項下 /std:c++latest 取得。

  • 已新增 C++23 功能的 IntelliSense 支援, this 以及 if consteval

  • 已新增內嵌參數名稱和類型提示支援,按 Alt+F1 或按兩下 Ctrl 來切換。 您可以在 [工具>選項>] 文本編輯器 > C/C++ > IntelliSense自定義此行為。

  • 已在 CMake 專案中新增 C++20 模組的實驗性支援。 此支援目前僅適用於 Visual Studio (MSBuild) 產生器。

  • 在 17.1 中,我們引進了內嵌開發人員的周邊緩存器和 RTOS 檢視。 我們會繼續改善這些檢視的功能,並在17.2中改善可用性:

    • RTOS 工具視窗現在預設為隱藏。 它可防止顯示工具視窗,並顯示當您未使用 RTOS 時不相關的錯誤訊息。
    • 當您在工具視窗中按兩下 RTOS 物件時,它會新增物件的監看式。
    • 當您在 RTOS 工具視窗中選取堆疊指標的開始和結束值時,它會在記憶體視窗中開啟。
    • 已將裝置目標的線程感知新增至呼叫堆疊視窗。
    • 用戶現在可以選取周邊、緩存器或欄位旁的釘選圖示,以將它們釘選到 [周邊檢視] 頂端。
  • 已新增剩餘 C++20 瑕疵報告的實作(也稱為反向移植)。 所有 C++20 功能現在都可在 /std:c++20 選項下使用。 如需實作反向移植的詳細資訊,請參閱 Microsoft/STL GitHub 存放庫中的 C++20 瑕疵報告專案MSVC 的 STL Completes /std:c++20 部落格文章。

  • 我們新增了各種 C++23 連結庫功能,可在 選項下 /std:c++latest 取得。 如需新功能的詳細資訊,請參閱 STL 存放庫變更記錄

  • 根據內含圖表的深度,已改善初始 C++ 索引編制的效能高達 20%。

Visual Studio 17.1 版中 C++ 的新功能

如需 Visual Studio 17.1 版新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.1 版版本資訊

  • 已新增 [ 設定預設] 範本,以使用 CMakePresets.json在遠端 macOS 系統上設定和建置 CMake 專案。 您也可以在遠端 macOS 系統上啟動 CMake 目標,然後在 GDB 或 LLDB 支援的 Visual Studio 調試程式中從遠端偵錯。
  • 您現在可以使用 LLDB 或 GDB 從 Visual Studio 中對遠端 macOS 系統上的核心傾印進行偵錯。
  • Clang Visual Studio 隨附的版本會LLVM升級至 v13。
  • 只有在識別在開啟工作區根目錄的 時 CMakeLists.txt ,Visual Studio 的 CMake 整合才會作用中。 CMakeLists.txt如果在工作區的另一個層級識別 ,系統會提示您啟用Visual Studio的 CMake 與通知整合。
  • 新的檢視可讓您透過偵>錯 Windows>Embedded 快取器,在微控制器和即時操作系統 (RTOS) 對象上檢查周邊緩存器並與其互動
  • 已新增 RTOS 專案線程檢視,可透過偵>錯 Windows>RTOS 物件取得。 如需詳細資訊,請參閱 Visual Studio中的內嵌軟體開發。

Visual Studio 17.0 版的 C++ 新功能

如需 Visual Studio 中新功能和 Bug 修正的摘要,請參閱 Visual Studio 2022 17.0 版版本資訊

  • Visual Studio IDE devenv.exe現在是原生 64 位應用程式。

  • MSVC 工具組現在預設為偵錯記錄中的 SHA-256 來源雜湊。 先前,工具組預設會使用 MD5 進行來源雜湊。

  • v143 建置工具現在可透過Visual Studio安裝程式和獨立建置工具取得

原生 C++ 的 熱重新載入

  • C++ 的 熱重新載入 可讓您對執行中的應用程式進行許多類型的程式代碼編輯,並套用它們,而不需要暫停應用程式執行,就像斷點一樣。

在 Visual Studio 2022 中,當您在調試程式中啟動應用程式時,您可以使用 [熱重新載入] 按鈕,在應用程式仍在執行時修改應用程式。 此體驗由原生 [編輯後繼續] 提供技術支援。 如需所支援編輯的詳細資訊,請參閱編輯後繼續 (C++)。

  • 熱重新載入 支援 CMake 和 Open Folder 專案。

WSL2 支援

  • 您現在可以在 WSL2 上以原生方式建置和偵錯,而不需要建立 SSH 連線。 支援跨平台 CMake 專案和 MSBuild 型 Linux 專案。

改善的 CMake 支援

  • 已將Visual Studio隨附的 CMake 版本升級為3.21版。 如需此版本可用項目的詳細資訊,請參閱 CMake 3.21 版本資訊

  • CMake 概觀頁面已更新以支援 CMakePresets.json

  • 您現在可以使用 CMake 3.21 和 v3 來設定和 CMakePresets.json 建置 CMake 專案。

  • Visual Studio 現在支援 buildPresets.targets 中的 CMakePresets.json選項。 此選項可讓您在 CMake 專案中建置目標子集。

  • CMake 專案中的 [專案] 選單已簡化,並公開 [刪除快取和重新設定] 和 [檢視快取] 的選項。

  • 已實作編譯程式/scanDependencies選項,列出 CMake 專案的 C++20 模組相依性,如P1689R5中所述。 這是使用 CMake 建置模組型項目支援的步驟,我們正努力在稍後版本中完成此支援。

標準連結庫改善

此處已醒目提示 [標準連結庫] [STL] 改進功能。 如需新功能、變更、錯誤修正和效能改善的完整清單,請參閱 STL 小組的 Changelog

  • 已新增偵錯可視化檢視,以改善下列類型的顯示方式:source_location、、 u8stringbind_front()、(及其反覆運算器)、、unreachable_sentinel_tranges::empty_viewranges::single_viewranges::iota_view 、(及其反覆運算器/sentinel)、threadthread::iddefault_sentinel_tranges::ref_viewjthread、 和filesystem::path
  • 將和 中的<string>函式系列新增[[nodiscard]]stoi() 各種函式,<locale>例如collate成員函式、 has_facet()isalnum()tolower() 系列。
  • P0980R1 VS 2019 16.10 中製作std::stringconstexpr。 現在支援 Clang。
  • P1004R2 VS 2019 16.10 中製作std::vectorconstexpr。 現在支援 Clang。

醒目提示的 C++23 功能

  • P1048R1已新增 is_scoped_enum,這是 C++ 標準連結庫的新特性,可偵測類型是否為範圍列舉。
  • P1132R7out_ptr()inout_ptr()
  • contains() P1679R3 For basic_string andbasic_string_view
  • 列舉P1682R3to_underlying()
  • P2162R2 允許繼承自std::variant
  • P2166R1 禁止從 建構basic_stringbasic_string_viewnullptr。 這項變更是中斷來源的變更。 先前在運行時間有未定義行為的程式代碼現在會因為編譯程序錯誤而遭到拒絕。
  • P2186R2 已移除垃圾收集支援。 這項變更會declare_reachable移除 、、declare_no_pointersundeclare_reachableundeclare_no_pointersget_pointer_safety。 先前,這些函式沒有作用。

醒目提示的效能改善

  • <format>現在會偵測寫入 back_insert_iteratorbasic_stringvector的 ,並在容器的 上end()更快速地呼叫 insert()
  • 我們改善了 和 std::count()vector<bool> 19x 和 26x 的效能std::find()(次數,而不是百分比)。
  • 我們已改善的 std::count() 效能 vector<bool>
  • std::byte現在與和 reverse() 具有相同的效能unsigned charvariant::swap()

Clang 和 LLVM 支援

  • Visual Studio 隨附的 LLVM 工具會升級至 LLVM 12。 如需詳細資訊,請參閱 LLVM 版本資訊

  • Clang-cl 支援已更新為 LLVM 12。

  • 您現在可以使用 LLDB 從 Visual Studio 對遠端系統上執行的處理程式進行偵錯。

C++ AMP 已被取代

  • C++ AMP 標頭現在已被取代。 在 C++ 專案中包含 <amp.h> 會產生建置錯誤。 若要使錯誤無聲,請定義 _SILENCE_AMP_DEPRECATION_WARNINGS。 如需詳細資訊,請參閱 我們的 AMP 取代連結

IntelliSense 改良功能

  • 我們在提供已匯入模組和標頭單位中類型之導覽和語法醒目提示時,改善了 C++ IntelliSense。 IntelliSense 是我們投資的積極領域。 協助我們改善:使用 >[說明傳送意見反應] 分享您對 開發人員社群 的意見反應。

  • 我們藉由優化快取標頭使用方式和符號數據庫存取來改善 C++ IntelliSense 效能,進而改善載入程式碼的負載時間。

  • IntelliSense Code Linter for C++ 現在預設為開啟,提供立即隨用即用的建議,並修正常見程式碼瑕疵的建議。

  • CMake 專案的 C++ IntelliSense 現在可在搭配顯示名稱使用預設值時運作。

C++ 工作負載更新

  • 已更新為 C++ 行動開發工作負載中的 NDK r21 LTS。

  • 使用 C++ 進行的遊戲開發工作負載現在會安裝支援 Visual Studio 2022 的最新 Unreal Engine。

程序代碼分析改善

  • 程式碼分析現在會強制傳回以 _Check_return__Must_inspect_result_ 標註的函式值,否則必須加以檢查。

  • 我們的程式代碼分析工具已改善 Null 指標取值偵測。

  • 已將 gsl::not_null 的支援新增至程式碼分析。

  • 在編譯程式選項下 /fsanitize=fuzzer 支援 Libfuzzer。

舊版的版本資訊

您也可以使用舊版 C++ 版本的版本資訊。 如需 Visual Studio 2019 中 C++ 新功能的詳細資訊,請參閱 Visual Studio 2019 中 C++ 的新功能。 如需有關 Visual Studio 2017 中 C++ 新功能的資訊,請參閱 Visual Studio 2017 中 C++ 的新功能。 如需舊版新功能的詳細資訊,請參閱 Visual C++ 新功能 2003 到 2015

已知問題

C++ IntelliSense

如需 Visual Studio 2022 中 C++ 的其他開放問題和可用因應措施的詳細資訊,請參閱 C++ 開發人員社群 問題清單

意見反應與建議

我們很樂意收到您的寶貴意見。 您可以使用安裝程式或 Visual Studio IDE 右上角的 [傳送意見反應] 圖示,或從 [說明>傳送意見反應] 中回報問題或建議功能。 您可以使用 Visual Studio 開發人員社群來追蹤您的問題,您可以在其中新增留言或尋找解決方案。 您也可以透過我們的即時聊天支援取得免費的安裝協助。

部落格

利用 Microsoft 開發人員部落格網站中提供的深入解析和建議,隨時掌握所有新版本的最新消息。 部落格包含各種功能的深入探討文章。 C++ 小組部落格Visual Studio 部落格特別感興趣。