VS Codeのエージェントモードを拡張するには、を試してください!

C++ コードの編集とナビゲート

この記事では、C/C++ 拡張機能に特化したコード編集とナビゲーション機能の概要を説明します。Visual Studio Code での一般的な編集とナビゲーションの詳細については、「基本的な編集」と「コードナビゲーション」を参照してください。

C++ コードの編集

C/C++ 拡張機能が提供するソースコード編集機能は、コードベースの編集、書式設定、理解のための強力なツールです。

ヘッダーファイルの識別

最適な編集エクスペリエンスを提供するために、C++ 拡張機能はコード内で参照されている各ヘッダーファイルの場所を知る必要があります。既定では、拡張機能は現在のソースディレクトリ、そのサブディレクトリ、およびいくつかのプラットフォーム固有の場所を検索します。参照されているヘッダーファイルが見つからない場合、#include ディレクティブの下に赤い波線が表示されます。

追加のインクルードディレクトリを指定するには、

  1. 参照されていない #include パスを選択します。
  2. 表示される電球アイコンを選択し、"includePath" 設定の編集を選択すると、C/C++ 拡張機能の設定エディターが開きます。
  3. インクルードパスセクションで、追加のインクルードディレクトリのパスを指定できます。

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 ファイルが識別された場合、clang-format の代わりに Visual C++ 書式設定エンジンが使用されます。そうでない場合は、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 を押すか、右クリックしてコンテキストメニューから定義へ移動を選択します。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。そうでない場合は、前のセクションで説明したように、競合する定義がピークウィンドウに表示されます。

選択したシンボルの定義が見つからない場合、C/C++ 拡張機能は自動的にそのシンボルの宣言を検索します。

宣言へ移動

宣言へ移動機能を使用すると、ソースコード内でシンボルが宣言されている場所に移動できます。この機能は定義へ移動と同じように機能しますが、宣言用です。ソースコード内のシンボルを選択し、右クリックしてコンテキストメニューから宣言へ移動を選択します。これにより、シンボルの宣言の場所に移動します。

参照へ移動

参照へ移動機能を使用すると、ソースコード内でシンボルがどれくらいの頻度でどこで参照されているかを理解できます。ソースコード内のシンボルを選択し、⇧F12 (Windows, Linux Shift+F12) を押すか、右クリックしてコンテキストメニューから参照へ移動を選択します。参照が見つかった場合、それらはピークウィンドウに表示されます。

型定義へ移動

型定義へ移動機能を使用すると、ソースコード内で型が定義されている場所にジャンプできます。ソースコード内の型を選択し、右クリックしてコンテキストメニューを開き、型定義へ移動を選択します。

次のステップ

さらに読む

他に質問がある場合や問題が発生した場合は、GitHub で問題を提出してください。問題の診断に役立つように、拡張機能からのログ情報の提供を求められる場合があります。拡張機能ログの提供については、「C/C++ 拡張機能のログ記録」を参照してください。