インクルード クリーンアップのメッセージ
この記事では、インクルード クリーンアップ機能によって生成されるメッセージについて説明します。 インクルード クリーンアップの詳細については、C/C++ インクルード クリーンアップの概要に関する記事を参照してください。
17.8 Preview 1 以降、Visual Studio では、C および C++ のコードの品質を向上させるために、次の方法で #include
をクリーンアップできます。
- 必要なヘッダー ファイルが別のヘッダー ファイルによって間接的にインクルードされるためにのみ、コンパイルされるコードにヘッダー ファイルを追加することを提案します。
- ビルド時間を短縮するため、使われていないヘッダー ファイルを削除することを提案します。
インクルード クリーンアップからのメッセージを、[エラー一覧] ウィンドウで提案、警告、またはエラーのいずれの形式で表示するかを選択できます。 詳しくは、「Visual Studio で C/C++ のインクルード クリーンアップを構成する」をご覧ください。
次の [エラー一覧] のスクリーンショットでは、使われていないヘッダーが警告として表示されるように、インクルード クリーンアップが構成されています。
ドロップダウン フィルターは [Build + IntelliSense] (ビルド + IntelliSense) に設定されています。 "VCIC002 - #include < iostream > isn't used in this file" (VCIC002 - #include < iostream > はこのファイルでは使用されていません) という警告が表示されています。
インクルード クリーンアップでは、次のメッセージが生成されます。
VCIC001
: Content from #include is used in this file and transitively included (#include の内容がこのファイルで使用され、推移的にインクルードされています)
このメッセージは、間接的にインクルードされているヘッダー ファイルの内容を使っていることを意味します。
たとえば、#include <string>
も含むヘッダー ファイルを直接インクルードしている可能性があります。 コードで string
を使っているにもかかわらず、そのファイルに #include <string>
がない場合は、他のヘッダー ファイルによって <string>
が間接的にインクルードされ続ける場合に限り機能します。 このメッセージは、ユーザーが推移的にインクルードされているヘッダー ファイルを直接インクルードすることで対処できるよう、コード内にこの状況があることを示します。 詳しくは、「直接ヘッダーと間接ヘッダー」をご覧ください。
VCIC002
: #include is not used in this file (#include はこのファイルで使用されていません)
このメッセージは、指定されたヘッダー ファイルが現在のファイルで使わていないことを意味します。 関連付けられている #include
ディレクティブを削除して #include
をクリーンアップし、ビルド時間を短縮できます。
関連項目
C/C++ インクルード クリーンアップの概要
Visual Studio で C/C++ のインクルード クリーンアップを構成する