編輯和瀏覽 C++ 程式碼
本文概述 C/C++ 擴充功能特有的程式碼編輯和瀏覽功能。如需 Visual Studio Code 中一般編輯和瀏覽的詳細資訊,請參閱基本編輯和程式碼瀏覽。
編輯 C++ 程式碼
C/C++ 擴充功能提供的原始碼編輯功能是編輯、格式化和理解程式碼庫的強大工具。
識別標頭檔
為了提供最佳的編輯體驗,C++ 擴充功能需要知道在哪裡可以找到程式碼中參考的每個標頭檔。依預設,此擴充功能會搜尋目前的原始碼目錄、其子目錄和一些平台特定的位置。如果找不到參考的標頭檔,則會在 #include
指示詞下方顯示紅色波浪線。
若要指定其他 include 目錄,
- 選取沒有參考的
#include
路徑。 - 選取出現的燈泡,然後選擇
編輯 "includePath" 設定
,這會開啟 C/C++ 擴充功能的 [設定] 編輯器。 - 在 [Include 路徑] 區段下,您可以指定任何其他 include 目錄的路徑。
列出成員
當您輸入成員存取符號 (.
或 ->
) 時,編輯器會顯示成員清單。當您輸入更多字母時,清單會即時篩選
程式碼格式化
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 設定。
快速資訊
您可以將滑鼠停留在符號上方,以查看其定義的內嵌檢視
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),然後輸入您要尋找的符號名稱。隨即會出現潛在相符項目的清單,並在您輸入時進行篩選。從相符項目清單中選擇以瀏覽至該符號的位置。
若要在目前工作區中搜尋符號,請按 ⌘T (Windows、Linux Ctrl+T),然後輸入符號的名稱。隨即會出現潛在相符項目的清單。如果您選擇的相符項目位於尚未開啟的檔案中,則會先開啟該檔案,然後再瀏覽至相符項目的位置。
您也可以透過 [命令面板] (⇧⌘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)) 並執行命令 [呼叫: 顯示呼叫階層]。這會在側邊欄中填入呼叫樹狀結構,其中包含您選取的函式所呼叫的所有函式。
切換側邊欄功能表中的電話圖示,以切換至傳入呼叫。每當您的函式被另一個函式參考時,就會顯示傳入呼叫。您也可以選取呼叫樹狀結構中已顯示的函式,然後按一下滑鼠右鍵以檢視可用的命令,藉此探索巢狀呼叫。
預覽
[預覽] 功能會在 [預覽視窗] 內顯示幾行程式碼,讓您不必離開目前的位置。這對於快速瞭解符號的內容很有用,而無需離開目前的程式碼。
若要開啟 [預覽視窗],請按一下滑鼠右鍵瀏覽至內容功能表,然後選取 [預覽]。您可以在其中選擇預覽符號的定義、宣告、類型定義或參考。
開啟預覽視窗後,您可以瀏覽顯示的結果清單,以尋找您感興趣的結果。如果您想要瀏覽至其中一個結果的位置,請選取結果,或在預覽視窗左側顯示的原始碼中按兩下。
移至定義
使用 [移至定義] 功能,快速瀏覽至符號在原始碼中定義的位置。在您的原始碼中選取符號,然後按 F12,或按一下滑鼠右鍵,然後從內容功能表中選擇 [移至定義]。當符號只有一個定義時,您會直接瀏覽至其位置,否則競爭定義會顯示在預覽視窗中,如上一節所述。
如果找不到您選取之符號的定義,C/C++ 擴充功能會自動搜尋符號的宣告。
移至宣告
使用 [移至宣告] 功能,瀏覽至符號在原始碼中宣告的位置。此功能與 [移至定義] 的功能相同,但適用於宣告。在您的原始碼中選取符號,按一下滑鼠右鍵,然後從內容功能表中選擇 [移至宣告]。這會將您瀏覽至符號宣告的位置。
移至參考
使用 [移至參考] 功能,瞭解符號在原始碼中被參考的頻率和位置。在您的原始碼中選取符號,然後按 ⇧F12 (Windows、Linux Shift+F12) 或按一下滑鼠右鍵,然後從內容功能表中選擇 [移至參考]。如果找到任何參考,它們會顯示在預覽視窗中。
移至類型定義
使用 [移至類型定義] 功能,跳到類型在原始碼中定義的位置。在您的原始碼中選取類型,按一下滑鼠右鍵以開啟內容功能表,然後選擇 [移至類型定義]。
後續步驟
繼續閱讀以瞭解
- 偵錯 C++ 程式碼
- 設定 IntelliSense
- 設定適用於 MSVC 的 VS Code
- 設定適用於 Mingw-w64 和 GCC 的 VS Code
- 設定適用於 macOS 的 VS Code
- VS Code 中的基本編輯
- VS Code 中的程式碼瀏覽
- VS Code 中的工作
如果您有任何其他問題或遇到任何問題,請在 GitHub 上提交問題。系統可能會要求您提供擴充功能的記錄資訊,以協助診斷問題。如需協助提供擴充功能記錄,請參閱C/C++ 擴充功能記錄。