現已釋出!閱讀關於 11 月新增功能和修復的內容。

配置 C/C++ IntelliSense

本文件介紹瞭如何配置 C/C++ 擴充套件,以便在 Visual Studio Code 中提供 C++ 特定 IntelliSense 建議。IntelliSense 是 VS Code 內建的一個有用工具,可提供各種程式碼編輯功能,幫助您更快、更高效地編碼。例如,程式碼補全、引數資訊、語法高亮、程式碼操作(燈泡)以及成員列表均由 IntelliSense 生成。

C/C++ IntelliSense 僅要求您的系統上安裝了 C/C++ 編譯器。C/C++ 編譯器會向 IntelliSense 提供 C++ 特定資訊,例如系統包含路徑的位置和其他設定。有關專案級別配置,請參閱 專案級別 IntelliSense 配置 部分。

C/C++ 擴充套件何時會為我配置核心 IntelliSense 功能?

配置核心 IntelliSense 功能只需要一個編譯器。為了識別 IntelliSense 的編譯器,C/C++ 擴充套件會在您計算機上的常見路徑中掃描 Clang、GCC、MinGW、cygwin、cygwin64 和 MSVC 等編譯器。如果識別出其中任何一個編譯器並且其位置安全,它們就會自動配置為 IntelliSense 使用。否則,會顯示一條通知,要求您確認是否應將此編譯器配置為 IntelliSense 使用。在這兩種情況下,所選的編譯器也會被設定為預設編譯器。

如何檢查 IntelliSense 是否已配置

如果您沒有配置 IntelliSense,C/C++ 擴充套件會在狀態列中顯示一個帶有警告標誌的黃色指示器,標記為“**配置 IntelliSense**”。

Configure IntelliSense indicator in the status bar

要進行配置,請選擇狀態列指示器,這將開啟“配置快速選擇”。快速選擇可以幫助您選擇或安裝 C/C++ 編譯器。

如果未看到狀態列指示器,您也可以檢查專案的 c_cpp_properties.json 檔案。此檔案儲存了所有 IntelliSense 配置設定。透過從命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中選擇“**C/C++: 編輯配置(UI)**”來導航到此檔案。檢查 IntelliSense mode 以查詢您的配置。

Command Palette filtered on C/C++ Edit Configurations command

如何配置 IntelliSense

IntelliSense 配置儲存在 c_cpp_properties.json 檔案中,該檔案會自動在您的工作區中建立。以下所有三種選項都是編輯 c_cpp_properties.json 檔案的不同方法。

選項 1. 透過配置快速選擇選擇配置選項

透過在命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中輸入“**選擇 IntelliSense 配置**”來開啟快速選擇。它會顯示一個下拉列表,其中包含 C/C++ 擴充套件在您計算機上找到的所有配置選項。

Select a compiler to configure for IntelliSense Quick Pick

選擇其中一個可用選項。如果選擇了一個編譯器,IntelliSense 預設將使用該編譯器。您可以隨時返回“**配置 IntelliSense**”快速選擇來更改用於配置 IntelliSense 的選項。

如果在快速選擇中沒有可用選項,說明您的系統中未識別到任何編譯器。您可以手動瀏覽計算機或安裝 C/C++ 編譯器。要在 Windows 計算機上安裝,請選擇“**幫助我安裝編譯器**”選項,它將重定向到關於如何安裝 C/C++ 編譯器的分步指南。在 macOS 或 Linux 計算機上,選擇“**安裝編譯器**”並按照提示操作,以便在您的計算機上安裝 C++ 編譯器。

選項 2. 透過 UI 編輯 IntelliSense 配置

透過從命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中選擇“**C/C++: 編輯配置(UI)**”來開啟 IntelliSense 配置。此檢視是 c_cpp_properties.json 檔案的使用者介面。

C/C++ IntelliSense Configurations user interface

將“**編譯器路徑**”欄位設定為您用於構建專案的編譯器的完整路徑。例如,在 Linux 上使用 GCC 的預設安裝路徑時,編譯器路徑為 /usr/bin/gcc。將“**IntelliSense mode**”設定為您使用的編譯器的特定架構變體。

選項 3. 直接編輯 c_cpp_properties.json 檔案

您可以直接編輯 c_cpp_properties.json 檔案來自定義您的配置。使用命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中的“**C/C++ 編輯配置(JSON)**”命令,然後 c_cpp_properties.json 檔案將在您工作區的 .vscode 資料夾中建立。

Command Palette filtered on C/C++ Edit Configurations (JSON) command

使用 compilerPath 變數來新增編譯器。此變數是您用於構建專案的編譯器的完整路徑。例如,在 Linux 上使用 GCC 的預設安裝路徑時,編譯器路徑為 /usr/bin/gcc

有關 c_cpp_properties.json 檔案的更多資訊,請參閱 架構參考

根據您的作業系統選擇下面的示例來獲取 c_cpp_configuration.json 檔案

> Windows 上的示例 c_cpp_configuration.json

使用 MinGW 的預設安裝路徑

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": ["${workspaceFolder}/**"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "windowsSdkVersion": "10.0.22621.0",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "${default}",
      "compilerPath": "C:/msys64/mingw64/bin/gcc.exe"
    }
  ],
  "version": 4
}

> macOS 上的示例 c_cpp_configuration.json
使用 Clang 的預設安裝路徑
{
  "configurations": [
    {
      "name": "Mac",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "macFrameworkPath": [
        "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
      ],
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "macos-clang-arm64"
    }
  ],
  "version": 4
}

> Linux 上的示例 c_cpp_configuration.json
使用 GCC 的預設安裝路徑
{
  "configurations": [
    {
      "name": "Linux-GCC",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "compilerPath": "/usr/bin/g++",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "gcc-x64",
      "browse": {
        "path": ["${workspaceFolder}"],
        "limitSymbolsToIncludedHeaders": true,
        "databaseFilename": ""
      }
    }
  ],
  "version": 4
}

專案級別 IntelliSense 配置

使用編譯器配置 IntelliSense 可為您提供核心 IntelliSense 功能。此設定稱為基本配置。對於更復雜的用法場景,例如設定需要

  • 附加包含路徑的專案,例如對一個或多個不同庫的引用
  • 影響語言行為(因此也影響 IntelliSense)的特定編譯器引數

有多種其他方法可以配置 IntelliSense。您可以提供這些附加配置,透過以下方式之一:

  • c_cpp_properties.json 檔案和相關設定
  • 以其他 VS Code 擴充套件形式的自定義配置提供程式(例如,Makefile ToolsCMake Tools 擴充套件)
  • compile_commands.json 檔案

配置提供程式

自定義配置提供程式是 VS Code 中的另一個擴充套件,它可能提供比 C/C++ 擴充套件更準確的 C++ IntelliSense 配置。例如,對於 CMake 或 Make 構建系統,Makefile ToolsCMake Tools 擴充套件可以作為配置提供程式。要將擴充套件新增為配置提供程式,請透過配置快速選擇來選擇該擴充套件,或者透過編輯“**高階設定**”下的“**配置提供程式**”欄位來將其新增到配置 UI,或者將 configurationProvider 欄位新增到您的 c_cpp_properties.json 檔案中。例如,對於 CMake 擴充套件,要新增的路徑是 ms-vscode.cmake-tools

C/C++ Advanced Settings Configuration provider

C/C++ 擴充套件會掃描系統中的自定義配置提供程式。如果它只識別出一個自定義配置提供程式,此配置提供程式就會自動配置為 IntelliSense 使用。如果識別出多個配置提供程式,您需要透過開啟“配置快速選擇”來選擇擴充套件應使用哪個。

compile_commands.json 檔案

提供 IntelliSense 配置的另一種選項是 compile_commands.json 檔案,它描述了專案中每個檔案使用的確切編譯命令。此檔案通常由構建系統(如 CMake 或 Bazel)生成,方法是在配置專案時設定命令列引數。可以透過與 如何配置 IntelliSense 部分中討論的相同方法,透過配置快速選擇、透過 UI 編輯配置或直接編輯 c_cpp_properties.json 檔案來選擇 compile_commands.json 檔案進行配置。在配置 UI 中,可以在“**高階配置**”下的“**編譯命令**”欄位中新增該檔案。例如,如果您的 compile_commands.json 檔案位於工作區的根目錄,請在“**編譯命令**”欄位中輸入 ${workspaceFolder}/compile_commands.json。否則,可以使用 compileCommands 配置屬性直接將其新增到 c_cpp_properties.json 檔案中。

如果編譯命令資料庫不包含與您在編輯器中開啟的檔案對應的翻譯單元的條目,則會改用您的基本配置(在 c_cpp_properties.json 中找到,例如您的 includePathdefines)。如果 C/C++ 擴充套件回退到基本配置,狀態列中的語言狀態指示器將顯示“**配置 IntelliSense**”標籤。

如果您指定了一個自定義配置提供程式和一個 compile_commands.json 檔案,則會首先查詢自定義配置提供程式以獲取 IntelliSense 配置。

如果您的程式包含不在您的工作區中或不在標準庫路徑中的標頭檔案,您可以修改“**包含路徑**”。C/C++ 擴充套件透過查詢“**編譯器路徑**”指定的編譯器來填充包含路徑。如果擴充套件找不到目標系統庫的路徑,您可以手動輸入包含路徑。

使用語言狀態列檢查 IntelliSense 活動

您可以使用語言狀態列來確定 IntelliSense 是否正在您的檔案上積極工作。要呼叫語言狀態列,請開啟 C++ 檔案。狀態列將顯示文字“**{} C++**”。將滑鼠懸停在“**{}**”符號上以開啟語言狀態列彈出視窗。彈出視窗中的第一個專案指示 IntelliSense 狀態。以下是不同的狀態及其含義:

  • “**IntelliSense: 就緒**” = IntelliSense 已為 C/C++ 擴充套件配置好,並在您與編輯器互動時(例如,編寫程式碼時)自動啟用。
  • “**IntelliSense: 更新中**” = IntelliSense 正在根據您對程式碼所做的更改,積極地確定任何程式碼補全、語法高亮等。

C++ extension language status bar flyout

您可以選擇語言狀態列彈出視窗中任意專案的右側的圖釘圖示,將其永久固定到您的狀態列。

後續步驟

© . This site is unofficial and not affiliated with Microsoft.