インクルード クリーンアップのメッセージ

この記事では、インクルード クリーンアップ機能によって生成されるメッセージについて説明します。 インクルード クリーンアップの詳細については、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++ のインクルード クリーンアップを構成する