在 Visual Studio 中編輯及重構 C++ 程式碼

Visual Studio 提供數種工具來協助您撰寫、編輯及重構程式碼。

IntelliSense

IntelliSense 是一種強大的程式碼完成工具,可在您鍵入時為您提供符號與程式碼片段的建議。 Visual Studio 中的 C++ IntelliSense 會即時執行,以便在您更新程式碼基底時進行分析並提供建議。 當您鍵入更多字元時,建議的結果清單就會縮小。

C 加號成員清單下拉式清單下拉式清單的螢幕擷取畫面,其中顯示可用於字串的方法,例如附加、指派等等。

自動省略某些符號可縮小結果範圍。 例如,從 類別外部存取類別物件的成員時,如果您不在子類別的內容中,則預設將無法看到私用成員或受保護的成員 () 。 您可以使用底部的按鈕來調整篩選。

從下拉式清單中選擇符號之後,您可以使用 TabEnter或預設 (其中一個其他認可字元自動完成: { } [ ] ( ) . , : ; + - * / % & | ^ ! = ? @ # \) 。 若要新增或移除此清單中的字元,請在 [快速啟動 ] (Ctrl + Q) 中搜尋 「IntelliSense」,然後選擇 [文字編輯器 > C/C++ > 進階 ] 選項。 [成員清單認可字元] 選項可讓您以所需的變更自訂清單。

[成員清單篩選模式] 選項可控制您所看到的 IntelliSense 自動完成建議種類。 根據預設,它會設定為 模糊。 在模糊搜尋中,如果您有一個稱為 MyAwesomeClass 的符號,您可以鍵入 "MAC",並在您的自動完成建議中尋找該類別。 模糊演算法會設定臨界值下限,符號必須符合該臨界值才會顯示在清單中。 智慧型篩選會顯示內含子字串符合鍵入內容的所有符號。 前置詞篩選則會搜尋以您所鍵入內容為開頭的字串。

如需 C++ IntelliSense 的詳細資訊,請參閱 Visual C++ IntelliSense設定 C++ IntelliSense 專案

IntelliCode

IntelliCode 是 AI 輔助的 IntelliSense。 它會將最有可能的候選項目放在完成清單頂端。 IntelliCode 建議是根據 GitHub 上數以千計的開放原始碼專案,每個都超過 100 顆星。 與您的程式碼內容結合使用時,可量身打造完成清單,以便升級常見做法。

當撰寫 C++ 時,IntelliCode 將會在使用 C++ 標準程式庫之類的熱門程式庫時提供協助。 您的程式碼內容用來先提供最有用建議。 在下列範例中 size ,成員函式通常會與 函式搭配 sort 使用,因此會呈現在結果清單頂端。

C 加上 IntelliCode 下拉式清單的螢幕擷取畫面,其中顯示程式碼中最常使用之向量類別的成員。

在 Visual Studio 2022 和 Visual Studio 2019 中,IntelliCode 可作為 C++ 桌面開發 工作負載中的選擇性元件。 若要確定適用于 C++ 的 IntelliCode 為作用中,請移至[工具>選項>][IntelliCode>一般],並將[C++ 基底模型] 設定為[已啟用]。

在 Visual Studio 2017 中,IntelliCode 則是以 Visual Studio Marketplace 的延伸模組形式提供。

預測性 IntelliSense (實驗性)

[預測性 IntelliSense] 是一項實驗性功能,可使用內容感知來限制 IntelliSense 下拉式清單中顯示的結果數目。 此演算法會套用類型比對,以便只顯示符合預期類型的結果。 在最簡單的情況下,如果您鍵入 int x = 並叫用 IntelliSense 下拉式清單,則只會看到整數或傳回整數的函式。 此功能預設為關閉,因為它仍在開發中。 它最適合全域符號;尚不支援成員函式。 您可以開啟這項功能,方法是在 [快速啟動] 中鍵入「預測」,或移至 [工具]>[選項]>[文字編輯器]>[C/C++]>[實驗性]>[啟用預測性 IntelliSense]

若要覆寫 預測性 IntelliSense 並顯示較長的清單,請按 Ctrl + J。如果 預測性 IntelliSense 開啟,叫用 Ctrl + J 會移除預測性篩選。 再次按下 Ctrl + J 則會從相關的成員清單結果中移除存取範圍篩選。 IntelliSense 下拉式清單下的 [ ([+]) 按鈕會執行 與 Ctrl + J相同的動作。將滑鼠停留在按鈕上方,以查看所顯示內容的工具提示資訊。

C 加上預測性 IntelliSense 的螢幕擷取畫面。

上述螢幕擷取畫面顯示下拉式清單底下的數個按鈕。 這些可讓 IntelliSense 篩選取得不同類型的結果:

  • 變數和常數
  • 函式
  • 類型
  • 巨集
  • 列舉
  • 命名空間

只有在與目前的 IntelliSense 會話相關時,才會顯示按鈕。 您通常不會同時看到所有按鈕。

範本 IntelliSense

範本列是 UI 元素,當您的資料指標位於範本定義上時,就會出現此元素。 這非常有用,因為您可以提供 Intellisense 的範例範本引數,當您編輯範本本文時會出現。 例如,您可以指定樣板引數的類型為 std::vector<int> 。 然後,當您在範本主體中使用該引數時,您會在 Intellisense 中看到 的成員 std::vector<int>

範本列的螢幕擷取畫面,其中已醒目提示 [新增所有現有具現化] 選項。

< 按一下 T >圖示展開/折迭範本列。 按一下鉛筆圖示或按兩下 範本列 ,以開啟 [ 編輯 ] 視窗,您可以在其中指定參數的引數類型。

範本列中編輯體驗的螢幕擷取畫面,您可以在其中輸入每個範本參數的類型。

範本列可以根據程式碼中範本的具現化,自動填入參數類型。 按一下 [新增所有現有具現化],以查看用來在整個程式碼基底中具現化範本的所有具體引數清單。

[範本 IntelliSense 結果] 的螢幕擷取畫面,其中列出用來具現化範本參數 C 的不同類型,例如 C = AmbientLight、C = 一些其他類型。

編輯器底部的視窗會顯示發現每個具現化的位置,以及其引數。 您可以選取具現化,以移至程式碼中找到該具現化的位置。

程式碼中範本具現化清單的螢幕擷取畫面。會列出具現化、檔案、位置和引數。

範本列 資訊是使用者專屬的資訊。 它會儲存在 .vs 資料夾中,且不會認可至原始檔控制。

錯誤波浪線與快速檢修

如果編輯器偵測到您的程式碼出現問題,它會在問題底下新增有顏色的波浪線。 紅色波浪線表示無法編譯的程式碼。 綠色波浪線表示可能仍然有潛在嚴重問題的其他問題類型。 您可以開啟 [錯誤清單] 視窗來取得問題的相關資訊。

針對某些種類的錯誤和常見的程式碼撰寫模式,編輯器會以燈泡的形式提供 快速修正 ,當您將滑鼠停留在波浪線上方時出現。 請按一下向下箭號來查看建議。

在下列範例中,已宣告 vector 但找不到任何定義,因此編輯器會包含必要的標頭檔:

錯誤和建議的快速修正 #include 向量的螢幕擷取畫面。

編輯器也會提供快速檢修以獲取一些重構機會。 例如,如果您在標頭檔中宣告類別,Visual Studio 將會在個別的 .cpp 檔案中為其建立定義。

顯示快速修正的螢幕擷取畫面,其中已醒目提示 [通道路由反覆運算器] 的 [建立通道路由反覆運算器] 選項。

變更追蹤

每當您變更檔案時,左側會顯示一條黃色列,表示已進行未儲存的變更。 當您儲存檔案時,該列會變成綠色。 只要在編輯器中開啟文件,就會呈現綠色列和黃色列。 它們代表您上次開啟文件以來所進行的變更。

C 加上變更追蹤的螢幕擷取畫面。左側的黃色列隨即出現,表示變更。

移動程式碼

您可以選取程式碼行並按住 Alt 鍵,然後按 [向上鍵/向下鍵],將這些程式碼行向上及向下移動。

插入程式碼片段

程式碼片段是預先定義的原始碼片段。 以滑鼠右鍵按一下單一點或選取的文字,然後選取 [程式碼片段] 以插入程式碼片段,或以程式碼片段括住選取的文字。 下圖顯示以 for 迴圈圍繞所選陳述式的三個步驟。 最終影像中的黃色反白顯示就是您使用 tab 鍵存取的可編輯欄位。 如需詳細資訊,請參閱程式碼片段

[插入程式碼片段] 下拉式控制項的螢幕擷取畫面。

已選取函式。 在以滑鼠右鍵按一下函式名稱後出現的下拉式清單中,[範圍括住... ]以黃色醒目提示。 在 [括住方式:] 下拉式清單中,已選取 'for' 迴圈的程式碼片段。 這會導致在 函式周圍放置 for 迴圈。 迴圈變數和限制會以黃色顯示,表示它們是可編輯的欄位。

加入類別

從 [專案] 功能表或從 [方案總管] 的操作功能表新增類別:

[新增類別] 對話方塊的螢幕擷取畫面。它具有類別名稱、協助工具、檔案的欄位,以放置宣告和實作等等。

您也可以使用 [類別精靈] 來修改或檢查現有的類別。

[類別精靈] 的螢幕擷取畫面,其中包含新增方法、成員變數等選項。

如需詳細資訊,請參閱使用程式碼精靈新增功能 (C++)

重構

重構可以從 [快速動作] 操作功能表下取得,或是按一下編輯器中的燈泡。 有些也可以在 [編輯 > 重構 ] 功能表中找到。 這些功能包括:

使用 ClangFormat 和 EditorConfig 施行程式碼樣式

Visual Studio 2017 和更新版本隨附 ClangFormat 的內建支援,這是一種根據 Clang/LLVM 的 C++ 熱門程式碼格式化公用程式。 請在 快速啟動 中鍵入 "ClangFormat",將它設定為使用其中一種常見格式:

  • LLVM
  • Google
  • Chromium
  • Mozilla
  • WebKit
  • Visual Studio

您也可以提供您自己的 .clang-format_clang-format 檔案,以將自訂規則套用至相同層級或以下的所有程式碼檔案。

這些檔案可透過原始檔控制輕鬆共用,因此您可以在整個開發小組中施行程式碼撰寫慣例。

顯示 .clang 格式檔案的螢幕擷取畫面,其中包含許多選項,例如資料行限制、縮排寬度、索引標籤寬度等等。

Visual Studio 2017 和更新版本也支援以類似方式運作的 EditorConfig。 不過,ClangFormat 的樣式選項比 EditorConfig 更多,包括 C++ 特有的規則。 使用 EditorConfig 時,您可以建立 .editorconfig 檔案,並將它們放在程式碼基底的不同資料夾中,用來指定這些資料夾及其子資料夾的程式碼樣式。 .editorconfig 檔案會取代父資料夾中的任何其他 .editorconfig 檔案,並覆寫任何透過 [工具]>[選項] 設定的格式設定。 您可以針對定位點與空格、縮排大小及其他項目設定一些規則。 如需詳細資訊,請參閱使用 EditorConfig 建立可攜式自訂編輯器設定

其他格式化選項

[快速啟動] 搜尋方塊提供尋找設定或工具的最快方式。 它位於主功能表上。 只要開始鍵入,自動完成清單就會篩選結果。

[快速啟動] 搜尋方塊的螢幕擷取畫面。它會顯示搜尋 C 加上進階,以產生文字編輯器的選項。

若要設定格式化選項,例如縮排、以大括弧完成和顏色標示,請在 [快速啟動] 視窗中鍵入 "C++ Formatting"。

顯示 C++ 格式設定選項的螢幕擷取畫面,例如當您輸入索引標籤時是否要自動縮排。

其他格式設定選項可在主功能表中的[編輯>進階] 底下找到。

顯示進階編輯選項的螢幕擷取畫面,例如檢視空白字元、自動換行、批註選取範圍、增加行縮排等等。

啟用和設定 C++特定編輯功能的選項位於[工具>選項>文字編輯器C/C++] > 底下。 選擇您想要設定的選項之後,您可以在對話方塊成為焦點時按下 F1 來取得更多說明。 針對一般程式碼格式化選項,請在 [快速啟動] 中鍵入 Editor C++

此螢幕擷取畫面顯示已選取 [Visual Studio] 功能表項目 [工具],並醒目提示 [選項] 功能表項目。

您可以在文字編輯器 C++ 實驗對話方塊中找到不一定包含在 Visual Studio 未來版本中的實驗性功能。 在 Visual Studio 2017 和更新版本中,您可以啟用這個對話方塊中的 [預測性 IntelliSense]

另請參閱

閱讀並瞭解 C++ 程式碼
在 Visual Studio 中流覽您的 C++ 程式碼基底
使用適用于 C++ 的 Live Share 共同作業