Microsoft C/C++ コンパイラの警告 (C4000 - C4199)

このセクションの記事では、Microsoft C/C++ コンパイラの警告メッセージ 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 は識別子を必要とします
コンパイラの警告 (レベル 3) C4007 'function': 'attribute' でなければなりません
コンパイラの警告 (レベル 3) C4008 'function': 'attribute' 属性は無視されました
コンパイラの警告 (レベル 1) C4010 単一行コメント (//) に、行連結文字があります
コンパイラの警告 (レベル 3) C4013 'function' は定義されていません。int 型の値を返す外部関数と見なします
コンパイラの警告 (レベル 1) C4015 'identifier': ビット フィールドの型は整数でなければなりません
コンパイラの警告 (レベル 3) C4018 'expression': 符号付き/符号なしが一致しません
コンパイラの警告 (レベル 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 型変換が行われました。データが失われている可能性があります。
コンパイラの警告 (レベル 1 およびレベル 4) C4052 関数に対する宣言の 1 つに可変個の引数が含まれていません。
コンパイラの警告 (レベル 4) C4053 '?:' 演算に void 型の式がオペランドとして使われています
コンパイラの警告 (レベル 1) C4055 'conversion': 'type1' データポインターが 'type2' 関数ポインターへキャストされています
コンパイラの警告 (レベル 2) C4056 浮動小数点数の定数演算でオーバーフローしました
コンパイラの警告 (レベル 4) C4057 'operator': 'identifier1' と 'identifier2' で間接参照している基本型が微妙に異なっています
コンパイラの警告 (レベル 3、オフ) C4060 switch ステートメントに 'case' または 'default' ラベルがありません
コンパイラの警告 (レベル 4、オフ) C4061 switch 中の列挙子 'identifier' (enum 'enumeration' の) は case ラベルによって明示的にハンドルされません
コンパイラの警告 (レベル 4、オフ) C4062 列挙型 'enumeration' を切り替えた enum 'identifier' はハンドルされません
コンパイラの警告 (レベル 4) C4063 case 'identifier' は enum 'enumeration' の switch の値として正しくありません
コンパイラの警告 (レベル 4) C4064 不完全な enum 'enumeration' の switch です
コンパイラの警告 (レベル 3、オフ) C4065 switch ステートメントに 'default' が含まれていますが、'case' ラベルがありません
コンパイラの警告 (レベル 3) C4066 ワイド文字定数の文字列は無視されます。
コンパイラの警告 (レベル 1) C4067 プリプロセッサ ディレクティブの後に余分な文字がありました - 改行が必要です
コンパイラの警告 (レベル 1) C4068 不明な pragma 'identifier'
コンパイラの警告 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 およびレベル 2) 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 およびレベル 4) C4101 'identifier': 参照されていないローカル変数
コンパイラの警告 (レベル 3) C4102 'label': 参照されていないラベル
コンパイラの警告 (レベル 1) C4103 ヘッダーを含めた後に配置が変更されました。#pragma pack(pop) がないためである可能性があります
コンパイラの警告 (レベル 1) C4109 予期しない識別子 'identifier' が含まれていました
コンパイラの警告 (レベル 1 およびレベル 4) 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 は 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 オブジェクトは初期化しなければなりません。
コンパイラの警告 (レベル 1 およびレベル 3) C4133 'expression': 'type1' と 'type2' の間で型に互換性がありません
コンパイラの警告 C4137 'function': 戻り値が浮動小数点数に指定された関数から戻り値がありませんでした
コンパイラの警告 (レベル 1) C4138 始まりのデリミターがない閉じのコメントデリミター '*/' が見つかりました
コンパイラの警告 (レベル1、エラー) C4141 'modifier': 2 度以上使用されています
コンパイラの警告 (レベル 1) C4142 'identifier': 型が再定義されていますが、それはコード生成上何の効果もありません
コンパイラの警告 (レベル 1) C4143 pragma '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 ローカル変数またはテンポラリのアドレスを返しますoptional_context
コンパイラの警告 (レベル 1) C4174 'name': #pragma component として使用できません
コンパイラの警告 (レベル 1) C4175 #pragma component(browser, on): ブラウザー情報は、最初はコマンド ラインで指定しなければなりません
コンパイラの警告 (レベル 1) C4176 'subcomponent': #pragma component ブラウザーで認識できない成分を指定しました
コンパイラの警告 (レベル 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 定数式が整数ではありません。
コンパイラの警告 (レベル 3 およびレベル 4) C4189 'identifier': ローカル変数が初期化されましたが、参照されていません
コンパイラの警告 (レベル 1) C4190 'identifier1' は C リンケージ指定ですが、C と互換性のないユーザー定義の型 'identifier2' を返しています
コンパイラの警告 (レベル 3、オフ) C4191 'operation': 'type_of_expression' から 'type_required' への変換は安全ではありません
結果のポインターを使用してこの関数を呼び出した場合、プログラムがエラーになる可能性があります
コンパイラの警告 (レベル 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 'token1' または 'token2' が必要でしたが、'token3' が見つかりました
コンパイラの警告 (レベル 3) C4197 'type': キャストのトップレベルの volatile は無視されます
コンパイラの警告 (レベル 1、レベル 2、レベル 3、レベル 4) C4199 message

関連項目

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