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

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

コードの書式設定
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 設定に移動し、Visual C++ 書式設定エンジンを使用するように vc_format に設定します。
拡張されたセマンティックカラー化
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)) を呼び出してコマンド Calls: Show Call Hierarchy を実行することもできます。これにより、サイドバーの呼び出しツリーに、選択した関数によって呼び出されるすべての関数が入力されます。

サイドバーメニューの電話アイコンを切り替えて、着信に切り替えます。着信は、関数が別の関数によって参照されるたびに表示されます。呼び出しツリーにすでに表示されている関数を選択し、その関数を右クリックして利用可能なコマンドを表示することで、ネストされた呼び出しを探索することもできます。

ピーク
Peek 機能は、ピークウィンドウ内に数行のコードを表示するため、現在の場所から移動する必要がありません。現在のコードから移動することなく、シンボルのコンテキストをすばやく理解するのに役立ちます。
ピークウィンドウを開くには、右クリックしてコンテキストメニューに移動し、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++ 拡張機能のログ」を参照してください。