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
設定 に移動し、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
キーを押すか、右クリックしてコンテキストメニューから [定義へ移動] を選択します。シンボルの定義が 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++ 拡張機能のログ記録」を参照してください。