このセクションの記事では、Microsoft C/C++ コンパイラの警告メッセージ C4000 ~ C4199 について説明します。
重要
Visual Studio のコンパイラとビルド ツールからは、さまざまな種類のエラーと警告が報告されます。 エラーや警告の検出後、ビルド ツールではコードの意図が仮定され、処理の続行が試行されるため、さらに多くの問題が同時に報告されることがあります。 ツールによるこの仮定が誤っていると、それ以降のエラーや警告がプロジェクトに適用されない場合があります。 プロジェクト内の問題を解決するときは、必ず、報告された最初のエラーまたは警告から開始し、多くの場合はリビルドしてください。 1 つの修正により、後続の複数のエラーが解決される場合があります。
Visual Studio の特定の診断メッセージのヘルプを見るには、[出力] ウィンドウで選択し、F1 キーを押します。 Visual Studio によって、そのエラーのドキュメント ページが開きます (存在する場合)。 ページの上部にある検索ツールを使用して、特定のエラーまたは警告に関する記事を検索することもできます。 または、ツール別のエラーと警告の一覧を参照し、このページの目次に入力します。
注
すべての Visual Studio エラーまたは警告が文書化されているわけではありません。 多くの場合、診断メッセージでは利用可能なすべての情報が提供されます。 このページに移動し、エラーまたは警告メッセージに追加の説明が必要であると思う場合は、このページのフィードバック ボタンを使用してお知らせください。 エラーまたは警告が間違っていると思われる場合、またはツールセットに別の問題が見つかった場合は、Developer Community サイトで製品の問題を報告してください。 また、フィードバックを送信し、IDE 内でバグを入力することもできます。 Visual Studio でメニュー バーに移動し、[ ヘルプ] > [フィードバックの送信] > [問題の報告] を選択するか、[ ヘルプ] > [フィードバックの送信] > [機能の提案] を使用して提案を送信します。 コンパイラによって生成されない一部のコンパイラ エラー トピックが作成され、代わりにこのページにリダイレクトされるようになりました。
Microsoft Q&A C++ フォーラムでは、エラーと警告に関する追加のサポートが表示される場合があります。 または、Visual Studio C++ Developer Community サイトでエラーまたは警告番号を検索します。 Stack Overflow でソリューションを検索することもできます。
その他のヘルプとコミュニティ リソースへのリンクについては、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 型の値を返す extern と見なします |
| コンパイラの警告 (レベル 1) C4015 | 'identifier' : ビット フィールドの型は整数にする必要があります |
| コンパイラの警告 (レベル 3) C4018 | 'expression': 符号付き/符号なしが一致しません |
| コンパイラの警告 (レベル 4) C4019 | グローバル スコープで空行があります。 |
| コンパイラの警告 (レベル 1) C4020 | 'function': 実引数が多すぎます |
| コンパイラの警告 (レベル 1) C4022 | 'function': 実際のパラメーター parameter_numberのポインターの不一致 |
| コンパイラ警告 (レベル 1) C4023 | 'function': 型指定されていない関数に渡されるベース ポインター: パラメーター parameter_number |
| コンパイラの警告 (レベル 1) C4024 | 'function': 仮パラメーターと実際のパラメーター parameter_numberの異なる型 |
| コンパイラの警告 (レベル 1) C4025 | 'function': 変数引数を持つ関数に渡されるベースのポインター: パラメーター 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 つあります |
| コンパイラの警告 (レベル 1) C4055 | 'conversion': 'type1' データポインターが 'type2' 関数ポインターへキャストされています |
| コンパイラの警告 (レベル 2) C4056 | 浮動小数点数の定数演算でオーバーフローしました |
| コンパイラの警告 (レベル 4) C4057 | 'operator': 'identifier1' と 'identifier2' で間接参照している基本型が微妙に異なっています |
| コンパイラの警告 (レベル 3、オフ) C4060 | switch ステートメントに 'case' または 'default' ラベルがありません |
| コンパイラの警告 (レベル 4、オフ) C4061 | enum 'enumeration' の switch 内の列挙子 'identifier' が、case ラベルによって明示的に処理されていません |
| コンパイラの警告 (レベル 4、オフ) C4062 | enum 'enumeration' の switch 内の列挙子 '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 | pragma パラメーターに '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 | pragma パラメーターに 'restore' または 'off' が必要です |
| コンパイラの警告 (レベル 1) C4098 | 'function': 'void' 関数が値を返しています |
| コンパイラの警告 (レベル 2) C4099 | 'identifier': 型名は最初 'object_type1' として使われていましたが 'object_type2' として使われています |
| コンパイラの警告 (レベル 4) C4100 | 'identifier': 参照されていないパラメーター |
| コンパイラの警告 (レベル 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' と混同される可能性があります |
| コンパイラの警告 (レベル 2) C4146 | 符号付きの値を代入する変数は、符号付き型にキャストしなければなりません |
| コンパイラの警告 (レベル 2) C4150 | 不完全な型 'type' へのポインターの削除で、デストラクタが呼び出されていません |
| コンパイラの警告 (レベル 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 | 不明な #インポート 属性 '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 | 型ライブラリ 'library' のインポート時に 'identifier' を自動的に除外します |
| コンパイラ警告 (レベル 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 | メッセージ |