🚀 在 VS Code 中取得

跨平台編譯的 IntelliSense

本文說明如何設定 C/C++ 擴充功能,以便在您為與開發主機不同的架構進行編譯時,在 Visual Studio Code 中提供適當的 IntelliSense (例如程式碼完成)。例如,當您的主機是 x64,但您要為 Arm 編譯時。

C/C++ 擴充功能不是編譯器,它提供豐富的語言功能,例如語法醒目提示和 IntelliSense。為了讓擴充功能提供正確的 IntelliSense 建議並反映正確的資料類型大小,您需要設定 C++ 擴充功能來模擬目標架構。

這些設定組態儲存在您專案的 c_cpp_properties.json 檔案中。若要編輯此檔案,請在 VS Code 中,從命令面板選取 **C/C++: 編輯組態 (UI)** (⇧⌘P (Windows、Linux Ctrl+Shift+P))

Command Palette

IntelliSense 設定範例

以下說明如何為以 Linux Arm 為目標的 Linux x64 主機設定 C/C++ 擴充功能。它會設定下列 IntelliSense 設定

  • **編譯器路徑**:擴充功能會在此位置查詢您的編譯器,以擷取系統程式庫和編譯器定義。
  • **IntelliSense 模式**:模擬目標架構和編譯器,讓擴充功能可以提供正確的 IntelliSense 並反映正確的資料類型大小,例如 pointersize_tlong 等等。

至少,設定**編譯器路徑**和 **IntelliSense 模式**提供了足夠的資訊,讓擴充功能模擬您專案的目標架構,儘管如果擴充功能能夠根據從查詢**編譯器路徑**傳回的定義正確選擇 **IntelliSense 模式**,則可能不需要設定它。

編譯器路徑

設定為您用來建置專案的編譯器完整路徑。

例如

Compiler path setting

IntelliSense 模式

設定為您使用的編譯器特定架構變體。

例如

IntelliSense mode setting

包含路徑

只有當您的程式包含不在工作區或標準程式庫路徑中的標頭檔時,才需要修改**包含路徑**。

C/C++ 擴充功能會透過查詢 **編譯器路徑** 指定的編譯器來填入包含路徑。如果擴充功能找不到目標系統程式庫的路徑,您可以手動輸入包含路徑

Include path setting

根據上述設定,您的 c_cpp_configuration.json 檔案看起來會像以下這樣。您可以從命令面板選取 **C/C++: 編輯組態 (JSON)** 來開啟它

{
  "configurations": [
    {
      "name": "myConfigurationName",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "compilerPath": "/usr/bin/arm-none-eabi-g++",
      "cStandard": "c11",
      "cppStandard": "c++14",
      "IntelliSenseMode": "gcc-arm"
    }
  ],
  "version": 4
}

後續步驟