🚀 在 VS Code 中免費取得

編輯和瀏覽 C++ 程式碼

本文概述 C/C++ 擴充功能特有的程式碼編輯和瀏覽功能。如需 Visual Studio Code 中一般編輯和瀏覽的詳細資訊,請參閱基本編輯程式碼瀏覽

編輯 C++ 程式碼

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

識別標頭檔

為了提供最佳的編輯體驗,C++ 擴充功能需要知道在哪裡可以找到程式碼中參考的每個標頭檔。依預設,此擴充功能會搜尋目前的原始碼目錄、其子目錄和一些平台特定的位置。如果找不到參考的標頭檔,則會在 #include 指示詞下方顯示紅色波浪線。

若要指定其他 include 目錄,

  1. 選取沒有參考的 #include 路徑。
  2. 選取出現的燈泡,然後選擇編輯 "includePath" 設定,這會開啟 C/C++ 擴充功能的 [設定] 編輯器。
  3. 在 [Include 路徑] 區段下,您可以指定任何其他 include 目錄的路徑。

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、保留此 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)@# 命令的快速鍵。

呼叫階層

[呼叫階層] 檢視會顯示對函式的所有呼叫或從函式的所有呼叫。它可讓您瞭解原始碼中函式之間複雜的呼叫關係。

若要檢視呼叫階層,請選取函式,按一下滑鼠右鍵以顯示內容功能表,然後選擇 [顯示呼叫階層]。您也可以使用鍵盤快速鍵 (Windows 上的 Shift+Alt+H),或叫用 [命令面板] (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行命令 [呼叫: 顯示呼叫階層]。這會在側邊欄中填入呼叫樹狀結構,其中包含您選取的函式所呼叫的所有函式。

Selecting call hierarchy and showing calls in sidebar

切換側邊欄功能表中的電話圖示,以切換至傳入呼叫。每當您的函式被另一個函式參考時,就會顯示傳入呼叫。您也可以選取呼叫樹狀結構中已顯示的函式,然後按一下滑鼠右鍵以檢視可用的命令,藉此探索巢狀呼叫。

Nested Calls for Call Hierarchy

預覽

[預覽] 功能會在 [預覽視窗] 內顯示幾行程式碼,讓您不必離開目前的位置。這對於快速瞭解符號的內容很有用,而無需離開目前的程式碼。

若要開啟 [預覽視窗],請按一下滑鼠右鍵瀏覽至內容功能表,然後選取 [預覽]。您可以在其中選擇預覽符號的定義、宣告、類型定義或參考。

Peek definition

開啟預覽視窗後,您可以瀏覽顯示的結果清單,以尋找您感興趣的結果。如果您想要瀏覽至其中一個結果的位置,請選取結果,或在預覽視窗左側顯示的原始碼中按兩下。

移至定義

使用 [移至定義] 功能,快速瀏覽至符號在原始碼中定義的位置。在您的原始碼中選取符號,然後按 F12,或按一下滑鼠右鍵,然後從內容功能表中選擇 [移至定義]。當符號只有一個定義時,您會直接瀏覽至其位置,否則競爭定義會顯示在預覽視窗中,如上一節所述。

如果找不到您選取之符號的定義,C/C++ 擴充功能會自動搜尋符號的宣告。

移至宣告

使用 [移至宣告] 功能,瀏覽至符號在原始碼中宣告的位置。此功能與 [移至定義] 的功能相同,但適用於宣告。在您的原始碼中選取符號,按一下滑鼠右鍵,然後從內容功能表中選擇 [移至宣告]。這會將您瀏覽至符號宣告的位置。

移至參考

使用 [移至參考] 功能,瞭解符號在原始碼中被參考的頻率和位置。在您的原始碼中選取符號,然後按 ⇧F12 (Windows、Linux Shift+F12) 或按一下滑鼠右鍵,然後從內容功能表中選擇 [移至參考]。如果找到任何參考,它們會顯示在預覽視窗中。

移至類型定義

使用 [移至類型定義] 功能,跳到類型在原始碼中定義的位置。在您的原始碼中選取類型,按一下滑鼠右鍵以開啟內容功能表,然後選擇 [移至類型定義]。

後續步驟

繼續閱讀以瞭解

如果您有任何其他問題或遇到任何問題,請在 GitHub 上提交問題。系統可能會要求您提供擴充功能的記錄資訊,以協助診斷問題。如需協助提供擴充功能記錄,請參閱C/C++ 擴充功能記錄