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

跨平臺編譯的 IntelliSense

本文介紹如何在 Visual Studio Code 中配置 C/C++ 擴充套件,以便在編譯到與開發主機不同的體系結構時提供正確的 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
}

後續步驟

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