C++ コードの編集とナビゲーション

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

C++ コードの編集

C/C++ 拡張機能が提供するソース コード編集機能は、コードベースの編集、フォーマット、および理解に役立つ強力なツールです。

ヘッダー ファイルの識別

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

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

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

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 in Comments(コメント内の 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)機能は、ピーク ウィンドウ内に数行のコードを表示するため、現在の場所から移動する必要がありません。現在のコードから移動することなく、シンボルの文脈をすばやく理解するのに役立ちます。

ピーク ウィンドウを開くには、右クリックしてコンテキスト メニューを表示し、ピークを選択します。そこから、シンボルの定義、宣言、型定義、または参照をピーク(のぞき見)することができます。

Peek definition

ピーク ウィンドウが開いている状態で、表示された結果リストを参照して目的のものを探します。これらの結果のいずれかの場所に移動したい場合は、結果を選択するか、ピーク ウィンドウの左側に表示されているソース コード内をダブルクリックします。

定義へ移動

定義へ移動機能を使用すると、ソース コード内でシンボルが定義されている場所にすばやく移動できます。ソース コード内のシンボルを選択し、F12 を押すか、右クリックしてコンテキスト メニューから 定義へ移動 を選択します。シンボルの定義が 1 つしかない場合は、その場所に直接移動します。それ以外の場合は、前のセクションで説明したように、競合する定義がピーク ウィンドウに表示されます。

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

宣言へ移動

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

参照へ移動

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

型定義へ移動

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

次のステップ

詳細については、以下をお読みください。

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

© . This site is unofficial and not affiliated with Microsoft.