コンパイラ警告 (C4000 - C4199)

ドキュメントのこのセクションの記事では、コンパイラによって生成される警告メッセージの一部について説明します。

重要

Visual Studio のコンパイラとビルド ツールからは、さまざまな種類のエラーと警告が報告されます。 エラーや警告の検出後、ビルド ツールではコードの意図が仮定され、処理の続行が試行されるため、さらに多くの問題が同時に報告されることがあります。 ツールによるこの仮定が誤っていると、それ以降のエラーや警告がプロジェクトに適用されない場合があります。 プロジェクト内の問題を解決するときは、必ず、報告された最初のエラーまたは警告から開始し、多くの場合はリビルドしてください。 1 つの修正によって、その後のエラーが多数解消される可能性があります。

Visual Studio の特定の診断メッセージのヘルプを見るには、[出力] ウィンドウで選択し、F1 キーを押します。 Visual Studio によって、そのエラーのドキュメント ページが開きます (存在する場合)。 ページの上部にある検索ツールを使用して、特定のエラーまたは警告に関する記事を検索することもできます。 または、ツール別のエラーと警告の一覧を参照し、このページの目次に入力します。

Note

すべての Visual Studio エラーまたは警告が文書化されているわけではありません。 多くの場合、診断メッセージでは利用可能なすべての情報が提供されます。 F1 を使用してこのページにアクセスし、エラーまたは警告メッセージに追加の説明が必要と思われる場合は、お知らせください。 このページのフィードバック ボタンを使用すると、GitHub でドキュメントに関する問題を提起できます。 エラーまたは警告が間違っていると思われる場合、またはツールセットに別の問題が見つかった場合は、Developer Community サイトで製品の問題を報告してください。 また、フィードバックを送信し、IDE 内でバグを入力することもできます。 Visual Studio でメニュー バーに移動し、[ヘルプ] > [フィードバックの送信] > [問題の報告] を選択するか、[ヘルプ] > [フィードバックの送信] > [提案の送信] を使用して提案を送信します。

Microsoft Learn Q&A フォーラムでは、エラーと警告に関する追加のサポートが表示される場合があります。 または、Visual Studio C++ Developer Community サイトでエラーまたは警告番号を検索します。 Stack Overflow でソリューションを検索することもできます。

その他のヘルプとコミュニティ リソースへのリンクについては、Visual C++ のヘルプとコミュニティに関するページを参照してください。

警告メッセージ

警告 メッセージ
コンパイラの警告 C4000 原因不明の警告
詳細については、Visual C++ ヘルプ メニューのサポート情報コマンドを選択してください。
またはサポート情報ヘルプ ファイルを参照してください
コンパイラ警告 (レベル 4) C4001 標準外の言語拡張 (単一行コメント) が行われています
コンパイラの警告 (レベル 1) C4002 マクロ 'identifier' に指定された実引数の数が多すぎます
コンパイラの警告 (レベル 1) C4003 マクロ 'identifier' に指定された実引数の数が少なすぎます
コンパイラ警告 (レベル 1) C4005 'identifier': マクロが再定義されました
コンパイラ警告 (レベル 1) C4006 #undef には定義を削除する識別子の名前が必要です。
コンパイラの警告 (レベル 2) C4007 'function': 'attribute' でなければなりません
コンパイラの警告 (レベル 3) C4008 'function': 'attribute' 属性は無視されました
コンパイラの警告 (レベル 1) C4010 単一行コメント (//) に、行連結文字があります
コンパイラ警告 (レベル 3) C4013 関数 'function' は定義されていません。int 型の値を返す外部関数と見なします
コンパイラ警告 (レベル 1) C4015 'identifier': ビット フィールドは、整数型として宣言されていません
コンパイラの警告 (レベル 3) C4018 'expression': signed と unsigned の数値を比較しようとしました
コンパイラの警告 (レベル 4) C4019 グローバル スコープで空行があります。
コンパイラの警告 (レベル 1) C4020 'function': 実引数が多すぎます
コンパイラ警告 (レベル 1) C4022 'function': 'parameter number' 番目の実引数のポインターの型が、仮引数のポインターの型と異なります
コンパイラの警告 (レベル 1) C4023 'function': 'parameter_number' 番目の引数で _based ポインターがプロトタイプ宣言されていない関数へ渡されます
コンパイラの警告 (レベル 1) C4024 'function': 型が 'parameter_number' の仮引数および実引数と異なります
コンパイラ警告 (レベル 1) C4025 'function': _based ポインターが可変引数を伴う関数に渡されました: パラメーター 'parameter_number'
コンパイラ警告 (レベル 1) C4026 関数はパラメーター リストを使って宣言されています。
コンパイラ警告 (レベル 1) C4027 関数はパラメーター リストなしで宣言されています。
コンパイラの警告 (レベル 1) C4028 パラメーターの型 'parameter_number' が関数宣言と一致しません
コンパイラ警告 (レベル 1) C4029 宣言された仮パラメーター リストが定義と一致しません
コンパイラ警告 (レベル 1) C4030 関数の 2 回目の宣言で引数の数が減少しています。
コンパイラの警告 (レベル 1) C4031 関数の 2 回目の宣言で引数の数が増加しています
コンパイラ警告 (レベル 4) C4032 'parameter_number' 番目の引数の型は以前の宣言の型と一致しません
コンパイラ警告 (レベル 1) C4033 'function': 値を返さなければいけません
コンパイラの警告 (レベル 1) C4034 sizeof 演算子がサイズが 0 となったオペランドに適用されました
コンパイラの警告 (レベル 3) C4035 'function': 戻り値がありません
コンパイラ警告 (レベル 1) C4036 実パラメーターとして渡される 'type' に型指定がありません
コンパイラ警告 (レベル 1) C4038 'modifier': 無効なクラス修飾子です
コンパイラ警告 (レベル 1) C4041 コンパイラの制限: ブラウザーの出力を中止します
コンパイラの警告 (レベル 1) C4042 'identifier': 無効なストレージ クラスがあります
コンパイラ警告 (レベル 1) C4045 'array': 指定された配列には、初期化子が多すぎます
コンパイラ警告 (レベル 1) C4047 'operator': 'identifier1' は 'identifier2' と間接操作のレベルが異なります
コンパイラの警告 (レベル 1) C4048 'identifier1' と 'identifier2' で配列の添字が異なります
コンパイラ警告 (レベル 1) C4049 コンパイラの制限: 行番号の出力を中止します
コンパイラの警告 (レベル 1) C4051 型変換が行われました。データが失われている可能性があります。
コンパイラの警告 (レベル 4) C4052 関数に対する宣言の 1 つに可変個の引数が含まれていません。
コンパイラ警告 (レベル 4) C4053 '?:' 演算に void 型の式がオペランドとして使われています。
コンパイラの警告 (レベル 1) C4055 'conversion': 'type1' データポインターが 'type2' 関数ポインターへキャストされています
コンパイラ警告 (レベル 2) C4056 浮動小数点数の定数演算でオーバーフローしました
コンパイラ警告 (レベル 4) C4057 'operator': 'identifier1' と 'identifier2' で間接参照している基本型が微妙に異なっています
コンパイラの警告 C4060 switch ステートメントに 'case' または 'default' ラベルがありません
コンパイラの警告 (レベル 4) C4061 switch 中の列挙子 'identifier' ('enumeration' の) は case ラベルによって明示的にハンドルされません
コンパイラの警告 (レベル 4) C4062 列挙型 'enumeration' を切り替えた列挙子 'identifier' はハンドルされません
コンパイラの警告 C4063 case 'identifier' は 'enumeration' の switch の値として正しくありません
コンパイラの警告 C4064 不完全な 'enumeration' の switch です
コンパイラの警告 C4065 switch 文に 'default' はありますが 'case' ラベルがありません
コンパイラ警告 (レベル 3) C4066 ワイド文字定数の文字列は無視されます。
コンパイラの警告 (レベル 1) C4067 プリプロセッサ ディレクティブの後に余分な文字がありました - 改行が必要です
コンパイラ警告 (レベル 1) C4068 不明なプラグマがありました。
コンパイラの警告 C4069 long double は double と同じ精度です
コンパイラ警告 (レベル 3) C4073 初期化子がライブラリ初期化領域にあります
コンパイラ警告 (レベル 1) C4074 初期化子がコンパイラの予約初期化領域にあります
コンパイラ警告 (レベル 1) C4075 初期化子が不明な初期化領域にあります。
コンパイラの警告 (レベル 1) C4076 'type_modifier': 型 'typename' では使用できません
コンパイラ警告 (レベル 1) C4077 check_stack プラグマに不明なオプションが与えられました。
コンパイラ警告 (レベル 1) C4079 不要なトークン 'token' が見つかりました
コンパイラの警告 (レベル 1) C4080 セグメント名の識別子が必要です。'symbol' が見つかりました。
コンパイラ警告 (レベル 1) C4081 'token1' が必要でしたが、'token2' が見つかりました
コンパイラの警告 (レベル 1) C4083 'token' が必要です。識別子 'identifier' が見つかりました
コンパイラ警告 (レベル 1) C4085 プラグマに、'on' か 'off' のパラメーターが必要です。
コンパイラ警告 (レベル 1) C4086 プラグマに '1'、'2'、'4'、'8'、'16' のいずれかのパラメーターが必要です。
コンパイラの警告 (レベル 1) C4087 'function': 関数のパラメーター リストは 'void' で宣言されています
コンパイラの警告 (レベル 1) C4088 'function': 'parameter_number' 番目の実引数と対応する 'parameter_number' 番目の仮引数のポインターが一致していません
コンパイラ警告 (レベル 1) C4089 'function': 'parameter_number' 番目の実引数と対応する 'parameter_number' 番目の仮引数の型が異なります
コンパイラ警告 (レベル 1) C4090 'operation': 異なる 'modifier' 修飾子です
コンパイラの警告 (レベル 1) C4091 'keyword': 変数が何も宣言されていないときは、'type' の左辺を無視します
コンパイラの警告 (レベル 4) C4092 sizeof 演算子が 'unsigned long' の値を返しました
コンパイラの警告 (レベル 2) C4094 タグのない 'token' がシンボルなしで宣言されています
コンパイラ警告 (レベル 1) C4096 'identifier': インターフェイスが COM インターフェイスではありません。IDL に変換されません
コンパイラの警告 (レベル 1) C4097 プラグマ パラメーターに 'restore' または 'off' が必要です。
コンパイラ警告 (レベル 1) C4098 'function': 戻り値の型が 'void' で宣言された関数が、値を返しました
コンパイラ警告 (レベル 2) C4099 'identifier': タイプ名は最初 'object_type1' として使われていましたが 'object_type2' として使われています
コンパイラの警告 (レベル 4) C4100 'identifier': 引数は関数の本体部で 1 度も参照されません
コンパイラの警告 (レベル 3) C4101 'identifier': ローカル変数は 1 度も使われていません
コンパイラ警告 (レベル 3) C4102 'label': ラベルは 1 度も参照されません
コンパイラの警告 (レベル 1) C4103 'filename': ヘッダーを含めた後に配置が変更されました。#pragma pack(pop) がないためである可能性があります
コンパイラ警告 (レベル 1) C4109 予期しない識別子 'identifier' が含まれていました
コンパイラの警告 (レベル 1) C4112 #line は 1 から 'line_count' の整数を必要とします
コンパイラ警告 (レベル 1) C4113 'identifier1' はパラメーター リストが 'identifier2' と異なります。
コンパイラ警告 (レベル 1) C4114 同じ型の修飾子が 2 度以上使われています。
コンパイラの警告 (レベル 1 およびレベル 4) C4115 'type': 型の定義がかっこの中で見つかりました
コンパイラの警告 (レベル 1) C4116 無名の型が式のかっこの中で定義されました
コンパイラ警告 (レベル 1) C4117 'name' は予約済みのマクロ名です。'command' は無視します
コンパイラ警告 (レベル 1) C4119 異なったシンボリックベース 'base1' と 'base2' が指定されています。
コンパイラ警告 (レベル 1) C4120 _based ポインターとベース以外のポインターが式に含まれています。
コンパイラの警告 (レベル 4) C4121 'symbol': メンバーのアラインメントは過剰にパッキングされています
コンパイラ警告 (レベル 1) C4122 'function': alloc_text プラグマが、extern c で宣言されている関数に対して作用しました
コンパイラの警告 (レベル 1) C4123 式に _based ポインター間の変換が含まれていますが、2 つのポインターのベース式が異なります
コンパイラの警告 (レベル 1) C4124 キーワード __fastcall が使われましたが スタック チェッキングがあるため低速コードになります
コンパイラの警告 (レベル 4) C4125 8 進数のエスケープ シーケンスが、10 進数のところで中断されました。
コンパイラ警告 (レベル 4) C4127 条件式が定数です。
コンパイラ警告 (レベル 1) C4129 'character': エスケープ シーケンスとして正しく認識されませんでした
コンパイラ警告 (レベル 4) C4130 'operator': 文字列定数のアドレスで論理演算が行われました
コンパイラの警告 (レベル 4) C4131 'function': 旧スタイルの宣言が使われています
コンパイラ警告 (レベル 4) C4132 'object': const オブジェクトは初期化しなければなりません
コンパイラの警告 (レベル 3) C4133 'type': 'type1' と 'type2' の間で型に互換性がありません
コンパイラの警告 C4137 'function': 戻り値が浮動小数点数に指定された関数から戻り値がありませんでした
コンパイラ警告 (レベル 1) C4138 始まりのデリミターがない閉じのコメントデリミター (*/) が見つかりました。
コンパイラの警告 (レベル 1) C4141 'modifier': 2 度以上使用されています
コンパイラの警告 (レベル 1) C4142 型が再定義されていますが、それはコード生成上何の効果もありません
コンパイラ警告 (レベル 1) C4143 'same_seg' プラグマはサポートされていません ; 代わりに __based を使用してください。
コンパイラ警告 (レベル 1) C4144 'expression': 関係式は switch ステートメントの制御式として使われています
コンパイラの警告 (レベル 1) C4145 'expression1': switch ステートメントの制御式と関係する式。式 'expression2' は、case 式と見なされます
コンパイラ警告 (レベル 2) C4146 符号付きの値を代入する変数は、符号付き型にキャストしなければなりません
コンパイラ警告 (レベル 2) C4150 'type' 型を削除するため delete 演算子が呼び出されましたが、定義がありません
コンパイラ警告 (レベル 4) C4152 関数へのポインターがデータへのポインターに変換されました
コンパイラ警告 (レベル 1) C4153 関数へのポインターがデータへのポインターに変換されました。
コンパイラの警告 (レベル 1) C4154 配列の delete が定義されていません。配列は、ポインターに変換されます
コンパイラ警告 (レベル 1) C4155 'delete' の配列でない形式を使った配列の削除は、定義されていません。
コンパイラ警告 (レベル 2) C4156 'delete' の配列でない形式を使った配列の削除は、定義されていません
コンパイラの警告 (レベル 1) C4157 プラグマは無視されます
コンパイラ警告 (レベル 1) C4158 #pragma pointers_to_members(full_generality, 'inheritance_type') と仮定します
コンパイラ警告 (レベル 3) C4159 #pragma pragma(pop,...): 以前にプッシュされた識別子 'identifier' がポップされます
コンパイラ警告 (レベル 1) C4160 #pragma pragma(pop,...): 以前にプッシュされた識別子 'identifier' が見つかりません
コンパイラ警告 (レベル 3) C4161 #pragma 'pragma'(pop...): ポップがプッシュの回数を上回っています
コンパイラ警告 (レベル 1) C4162 'identifier': C リンケージを伴う関数が見つかりません
コンパイラの警告 (レベル 1) C4163 'identifier': 組み込み関数として使用できません
コンパイラ警告 (レベル 1) C4164 'function': 組み込み関数は宣言されていません
コンパイラ警告 (レベル 3、オフ) C4165 'HRESULT' は 'bool' に変換されようとしています。続行しますか?
コンパイラの警告 (レベル 1) C4166 コンストラクターとデストラクターの呼び出し規約が無効です。
コンパイラ警告 (レベル 1) C4167 'function': 組み込み関数としてのみ使用可能です
コンパイラの警告 (レベル 1) C4168 コンパイラの制限: デバッガー タイプではありません。プログラム データベース 'database' を削除してリビルドします
コンパイラ警告 (レベル 1) C4172 ローカル変数またはテンポラリのアドレスを返します
コンパイラ警告 (レベル 1) C4174 'name': #pragma コンポーネントとして利用できません
コンパイラの警告 (レベル 1) C4175 #pragma component(browser, on): ブラウザー情報は、最初はコマンド ラインで指定しなければなりません
コンパイラ警告 (レベル 1) C4176 'subcomponent': #pragma コンポーネント ブラウザーで認識できない成分を指定しました
コンパイラ警告 (レベル 1) C4177 #pragma 'pragma' は、グローバルまたは名前空間スコープでのみ使用できます
コンパイラ警告 (レベル 1) C4178 case 定数 'constant' が switch 式の型としては大きすぎます
コンパイラの警告 (レベル 4) C4179 '//*': '/' および '/*' に解析されました: 標準のコメント '//' と混同しています
コンパイラ警告 (レベル 1) C4180 関数型へ適用された修飾子は無効なため、無視されます。
コンパイラの警告 C4181 参照型に適用された修飾子は無視されました
コンパイラの警告 (レベル 1) C4182 #include の入れ子のレベルの深さは 'nest_count' です。無限再帰の可能性があります
コンパイラ警告 (レベル 1) C4183 'identifier': 戻り値の型がありません。'int' を返すメンバー関数と見なします
コンパイラの警告 (レベル 1) C4185 不明な #import の属性 'attribute' を無視します
コンパイラ警告 (レベル 1) C4186 #import 属性 'attribute' は 'argument_count' 引数を必要とします。無視されました
コンパイラ警告 (レベル 1) C4187 #import の属性 'attribute1' と 'attribute2' は互換性がありません。両方とも無視されます
コンパイラ警告 (レベル 1) C4188 定数式が整数ではありません。
コンパイラの警告 (レベル 4) C4189 'identifier': ローカル変数が初期化されましたが、参照されていません
コンパイラ警告 (レベル 1) C4190 ' identifier1' は C リンケージ指定ですが、C と互換性のないユーザー定義の型 'identifier2' を返しています
コンパイラの警告 (レベル 3) C4191 'operator/operation': 'type_of_expression' から 'type_required' への変換は保証されません。\nresult ポインターを使用してこの関数を呼び出した場合、エラーが発生する可能性があります
コンパイラ警告 (レベル 3) C4192 'identifier' を自動的に除外し、タイプ ライブラリ 'library' をインポートします
コンパイラの警告 (レベル 3) C4193 #pragma warning(pop): 一致する '#pragma warning(push)' がありません
コンパイラの警告 (レベル 1) C4194 #pragma start_map_region は入れ子にできません。無視されます
コンパイラの警告 (レベル 1) C4195 #pragma stop_map_region が一致する #pragma start_map_region なしに使用されています。無視されます
コンパイラの警告 (レベル 1) C4196 '%$L' または '%$L' が期待されています。'%$L' が見つかりました
コンパイラ警告 (レベル 3) C4197 'type': キャストの トップレベルの volatile は無視されます
コンパイラの警告 (レベル 1、レベル 2、レベル 3、レベル 4) C4199 %s

関連項目

C/C++ コンパイラおよびビルド ツールのエラーと警告
コンパイラ警告 C4000 - C5999