參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

編輯和導航 C++ 程式碼

本文概述了 C/C++ 擴充套件特有的程式碼編輯和導航功能。有關 Visual Studio Code 中常規編輯和導航的更多資訊,請參閱基本編輯程式碼導航

編輯 C++ 程式碼

C/C++ 擴充套件提供的原始碼編輯功能是用於編輯、格式化和理解程式碼庫的強大工具。

識別標頭檔案

為了提供最佳的編輯體驗,C++ 擴充套件需要知道在程式碼中引用的每個標頭檔案的位置。預設情況下,該擴充套件會搜尋當前源目錄、其子目錄以及一些特定於平臺的位置。如果找不到引用的標頭檔案,#include 指令下方會顯示一條紅色波浪線。

要指定其他包含目錄,

  1. 選擇一個沒有引用的 #include 路徑。
  2. 選擇出現的小燈泡圖示,然後選擇 編輯 "includePath" 設定 (Edit "includePath" setting),這將開啟 C/C++ 擴充套件的設定編輯器。
  3. 包含路徑 (Include Path) 部分,您可以為任何其他包含目錄指定路徑。

Process of adding a new header to the include path

列出成員

當您鍵入成員訪問符號(.->)時,編輯器會顯示一個成員列表。隨著您鍵入更多字母,該列表會即時篩選。

List members

程式碼格式化

Visual Studio Code 的 C/C++ 擴充套件支援使用 clang-format 和 vc_format 來格式化原始碼。這兩種格式化選項都包含在該擴充套件中,其中 clang-format 是預設選項。

您可以使用格式化文件 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 格式化整個檔案,或在右鍵上下文選單中使用格式化選定內容 (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F)) 僅格式化當前選中的部分。您還可以透過以下設定,根據使用者操作(如鍵入、儲存和貼上)觸發格式化:

  • editor.formatOnSave - 在儲存檔案時進行格式化。
  • editor.formatOnType - 在鍵入時進行格式化(在輸入 ; 字元時觸發)。

要了解有關格式化的更多資訊,請參閱格式化

Clang-format

預設情況下,clang-format 樣式設定為 file。這意味著,如果在您的工作區中找到 .clang-format 檔案,則該檔案中指定的設定將用作格式化參考。否則,格式化將基於 C_Cpp.clang_format_fallbackStyle 設定中指定的預設樣式。

當前,預設的格式化樣式是 Visual Studio,這是對 Visual Studio 中預設程式碼格式化程式的近似模擬。它包含以下設定:

UseTab: (VS Code current setting)
IndentWidth: (VS Code current setting)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 0

要使用與擴充套件附帶版本不同的 clang-format 版本,請將 C_Cpp.clang_format_path 設定更改為 clang-format 二進位制檔案的安裝路徑。

例如,在 Windows 平臺上,使用:

  "C_Cpp.clang_format_path": "C:\\Program Files (x86)\\LLVM\\bin\\clang-format.exe"

vc_format

預設情況下,如果在要格式化的程式碼附近識別到帶有相關設定的 .editorconfig 檔案,則會使用 Visual C++ 格式化引擎而不是 clang-format。否則,請導航到 C_Cpp.formatting 設定並將其設定為 vc_format,以使用 Visual C++ 格式化引擎。

增強的語義著色

啟用 IntelliSense 後,Visual Studio Code C/C++ 擴充套件支援語義著色。有關為類、函式、變數等設定顏色的更多資訊,請參閱增強的著色。有關配置 IntelliSense 的更多資訊,請參閱IntelliSense 配置

快速資訊

您可以將滑鼠懸停在符號上,以檢視其定義的內聯檢視。

Quick info

Doxygen 註釋

Doxygen 是一個從原始碼生成文件的工具。當您用註釋為程式碼添加註解時,Doxygen 會為這些函式生成文件。對於 Doxygen 註釋,鍵入 /** 並按 Enter 鍵即可生成一個 Doxygen 註釋塊。支援的 Doxygen 標籤包括:@brief@tparam@param@return@exception@deprecated@note@attention@pre

Markdown 註釋

預設情況下,C++ 擴充套件支援在編輯器中顯示 Markdown 的一個子集。該子集支援除 _* 符號外的所有 Markdown 註釋。切換新的註釋中的 Markdown (Markdown in Comments) 設定,可以啟用所有 Markdown、保留此 Markdown 子集或停用 Markdown 支援。

導航原始碼

原始碼導航功能可以幫助您更好地理解程式碼庫。這些功能讓您可以快速搜尋程式碼中的符號、導航到它們的定義或查詢它們的引用。

導航功能由儲存在本地符號資訊資料庫中的一組標籤提供支援。每當開啟包含 C++ 原始碼檔案的資料夾時,C/C++ 擴充套件都會為這些檔案中定義的符號建立一個數據庫。每當檔案被更改時,該資料庫都會更新。如果文件在未儲存的情況下關閉,資料庫將更新到最後儲存的狀態。

搜尋符號

您可以在當前檔案或工作區中搜索符號,以更快地導航程式碼。

要在當前檔案中搜索符號,請按 ⇧⌘O (Windows, Linux Ctrl+Shift+O),然後輸入您要查詢的符號名稱。此時會顯示一個潛在匹配項的列表,該列表會隨著您的輸入進行篩選。從匹配項列表中選擇一項即可導航到該符號的位置。

Searching the current file

要在當前工作區中搜索符號,請按 ⌘T (Windows, Linux Ctrl+T),然後輸入符號名稱。此時會顯示一個潛在匹配項的列表。如果您選擇的匹配項位於尚未開啟的檔案中,該檔案將在導航到匹配項位置之前被開啟。

Searching in your workspace

您還可以透過命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 訪問這些命令來搜尋符號。使用快速開啟 (⌘P (Windows, Linux Ctrl+P)),然後輸入 @ 命令搜尋當前檔案,或輸入 # 命令搜尋當前工作區。⇧⌘O (Windows, Linux Ctrl+Shift+O)⌘T (Windows, Linux Ctrl+T) 分別是 @# 命令的快捷鍵。

呼叫層級

呼叫層級檢視顯示了對一個函式的所有呼叫或從該函式發出的所有呼叫。它能讓您理解原始碼中函式之間複雜的呼叫關係。

要檢視呼叫層級,請選擇一個函式,右鍵單擊以顯示上下文選單,然後選擇顯示呼叫層級 (Show Call Hierarchy)。您也可以使用鍵盤快捷鍵(在 Windows 上是 Shift+Alt+H),或呼叫命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 並執行命令呼叫:顯示呼叫層級 (Calls: Show Call Hierarchy)。這將在側邊欄的呼叫樹中填充所有被您所選函式呼叫的函式。

Selecting call hierarchy and showing calls in sidebar

切換側邊欄選單中的電話圖示以切換到傳入呼叫。每當您的函式被另一個函式引用時,傳入呼叫就會顯示。您還可以透過選擇呼叫樹中已顯示的函式,並右鍵單擊該函式以檢視可用命令,來瀏覽巢狀呼叫。

Nested Calls for Call Hierarchy

速覽

速覽功能在一個速覽視窗中顯示幾行程式碼,這樣您就不必離開當前位置。這對於快速理解符號的上下文非常有用,而無需離開當前程式碼。

要開啟速覽視窗,請右鍵單擊開啟上下文選單,然後選擇速覽 (Peek)。在這裡,您可以選擇速覽符號的定義、宣告、型別定義或引用。

Peek definition

在速覽視窗開啟的情況下,您可以瀏覽顯示的結果列表,找到您感興趣的一項。如果您想導航到其中一個結果的位置,請選擇該結果或雙擊速覽視窗左側顯示的原始碼。

轉到定義

使用轉到定義 (Go to Definition) 功能可以快速導航到符號在原始碼中定義的位置。在原始碼中選擇一個符號,然後按 F12,或右鍵單擊並從上下文選單中選擇轉到定義。當該符號只有一個定義時,您會直接導航到其位置;否則,相互競爭的定義將如上一節所述在速覽視窗中顯示。

如果找不到所選符號的定義,C/C++ 擴充套件會自動搜尋該符號的宣告。

轉到宣告

使用轉到宣告 (Go to Declaration) 功能可以導航到符號在原始碼中宣告的位置。此功能與轉到定義的功能相同,但作用於宣告。在原始碼中選擇一個符號,右鍵單擊,然後從上下文選單中選擇轉到宣告。這將把您導航到該符號宣告的位置。

轉到引用

使用轉到引用 (Go to References) 功能可以瞭解符號在原始碼中被引用的頻率和位置。在原始碼中選擇一個符號,然後按 ⇧F12 (Windows, Linux Shift+F12),或右鍵單擊並從上下文選單中選擇轉到引用。如果找到任何引用,它們將在速覽視窗中顯示。

轉到型別定義

使用轉到型別定義 (Go to Type Definition) 功能可以跳轉到型別在原始碼中定義的位置。在原始碼中選擇一個型別,右鍵單擊開啟上下文選單,然後選擇轉到型別定義

後續步驟

繼續閱讀以瞭解:

如果您有任何其他問題或遇到任何問題,請在 GitHub 上提交一個 issue。您可能會被要求提供擴充套件的日誌資訊以幫助診斷問題。有關提供擴充套件日誌的幫助,請參閱C/C++ 擴充套件日誌記錄