C++ コードの編集とナビゲーション
この記事では、C/C++ 拡張機能に特有のコード編集およびナビゲーション機能の概要について説明します。Visual Studio Code での一般的な編集とナビゲーションの詳細については、基本的な編集とコード ナビゲーションを参照してください。
C++ コードの編集
C/C++ 拡張機能が提供するソース コード編集機能は、コードベースの編集、フォーマット、および理解に役立つ強力なツールです。
ヘッダー ファイルの識別
最適な編集体験を提供するために、C++ 拡張機能はコード内で参照されている各ヘッダー ファイルの場所を特定する必要があります。デフォルトでは、拡張機能は現在のソース ディレクトリ、そのサブディレクトリ、およびいくつかのプラットフォーム固有の場所を検索します。参照されているヘッダー ファイルが見つからない場合、#include ディレクティブの下に赤色の波線が表示されます。
追加のインクルード ディレクトリを指定するには、
- 参照がない
#includeパスを選択します。 - 表示される電球アイコンを選択し、
Edit "includePath" setting("includePath" 設定の編集)を選択します。これにより、C/C++ 拡張機能の設定エディターが開きます。 - Include Path セクションで、追加のインクルード ディレクトリのパスを指定できます。

メンバーの一覧表示
メンバー アクセス記号(. または ->)を入力すると、エディターにメンバーの一覧が表示されます。文字を入力するにつれて、リストがリアルタイムでフィルター処理されます。

コードのフォーマット
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 の設定を参照してください。
クイック情報
シンボルの上にホバーすると、その定義をインライン ビューで表示できます。

Doxygen コメント
Doxygen は、ソース コードからドキュメントを生成するツールです。コードにコメントを付記すると、Doxygen はそれらの関数のドキュメントを生成します。Doxygen コメントを作成するには、/** と入力して Enter キーを押すと、Doxygen コメント ブロックが生成されます。サポートされている Doxygen タグには、@brief、@tparam、@param、@return、@exception、@deprecated、@note、@attention、@pre があります。
Markdown コメント
デフォルトでは、C++ 拡張機能はエディター内での Markdown のサブセットの表示をサポートしています。このサブセットは、記号 _ および * を除くすべての Markdown コメントをサポートします。新しい Markdown in Comments(コメント内の 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)) を起動して 呼び出し: 呼び出し階層の表示 コマンドを実行することもできます。これにより、選択した関数によって呼び出されるすべての関数がサイドバーの呼び出しツリーに入力されます。

サイドバー メニューの電話アイコンを切り替えて、呼び出し元(受信呼び出し)に切り替えます。呼び出し元は、お使いの関数が別の関数から参照されるたびに表示されます。また、呼び出しツリーにすでに表示されている関数を選択し、その関数を右クリックして利用可能なコマンドを表示することで、入れ子になった呼び出しを調べることもできます。

ピーク
ピーク(Peek)機能は、ピーク ウィンドウ内に数行のコードを表示するため、現在の場所から移動する必要がありません。現在のコードから移動することなく、シンボルの文脈をすばやく理解するのに役立ちます。
ピーク ウィンドウを開くには、右クリックしてコンテキスト メニューを表示し、ピークを選択します。そこから、シンボルの定義、宣言、型定義、または参照をピーク(のぞき見)することができます。

ピーク ウィンドウが開いている状態で、表示された結果リストを参照して目的のものを探します。これらの結果のいずれかの場所に移動したい場合は、結果を選択するか、ピーク ウィンドウの左側に表示されているソース コード内をダブルクリックします。
定義へ移動
定義へ移動機能を使用すると、ソース コード内でシンボルが定義されている場所にすばやく移動できます。ソース コード内のシンボルを選択し、F12 を押すか、右クリックしてコンテキスト メニューから 定義へ移動 を選択します。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。それ以外の場合は、前のセクションで説明したように、競合する定義がピーク ウィンドウに表示されます。
選択したシンボルの定義が見つからない場合、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++ 拡張機能のログ記録を参照してください。