Microsoft C/C++ コンパイラ警告 (C4200 から C4399)

このセクションの記事では、Microsoft C/C++ コンパイラの警告メッセージ C4200 から C4399 について説明します。

重要

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++ のヘルプとコミュニティに関するページを参照してください。

警告メッセージ

警告 メッセージ
コンパイラ警告 (レベル 2 およびレベル 4) C4200 非標準の拡張機能が使用されています : 構造体または共用体の中にサイズが 0 の配列があります
コンパイラ警告 (レベル 4) C4201 非標準の拡張機能が使用されています: 無名の構造体または共用体です
コンパイラ警告 (レベル 4) C4202 非標準の拡張機能が使用されています: '...': 名前リスト内のプロトタイプ引数が正しくありません
コンパイラ警告 C4203 非標準の拡張機能が使用されています: 静的メンバー変数を含む共用体です
コンパイラ警告 (レベル 4) C4204 非標準の拡張機能が使用されています: 定数でない初期化子の集約です
コンパイラ警告 (レベル 4) C4205 非標準の拡張機能が使用されています: 関数スコープ内の静的関数の宣言です
コンパイラ警告 (レベル 4) C4206 非標準の拡張機能が使用されています: 翻訳単位が空です
コンパイラ警告 (レベル 4) C4207 非標準の拡張機能が使用されています: 拡張された初期化子フォームです
コンパイラ警告 (レベル 4) C4208 非標準の拡張機能が使用されています: delete [exp] - exp を評価しましたが無視します
コンパイラ警告 (レベル 4) C4210 非標準の拡張機能が使用されています: 関数にはファイル スコープが与えられています
コンパイラ警告 (レベル 4) C4211 非標準の拡張機能が使用されています: extern が static に再定義されました
コンパイラ警告 (レベル 4) C4212 非標準の拡張機能が使用されています: 関数宣言で省略記号が使われています
コンパイラ警告 (レベル 4) C4213 非標準の拡張機能が使用されています: lvalue でキャストしました
コンパイラ警告 (レベル 4) C4214 非標準の拡張機能が使用されています: int 以外のビット フィールド型です
コンパイラ警告 (レベル 1) C4215 非標準の拡張機能が使用されています: long float です
コンパイラ警告 (レベル 1) C4216 非標準の拡張機能が使用されています: float long です
コンパイラ警告 (レベル 4) C4218 非標準の拡張機能が使用されています: 少なくとも、ストレージ クラスか型を指定しなければなりません
コンパイラ警告 (レベル 4) C4220 varargs は残りの引数と一致させます
コンパイラ警告 (レベル 4) C4221 非標準の拡張機能が使用されています: 'identifier': 自動変数 'variable' のアドレスを使用して初期化することはできません
コンパイラ警告 (レベル 1 およびレベル 4) C4223 非標準の拡張機能が使用されています: lvalue 値ではない配列をポインターに変換しました
コンパイラ警告 (レベル 1) C4224 非標準の拡張機能が使用されています: 仮引数 'identifier' は型として定義されていました
コンパイラ警告 (レベル 1、エラー) C4226 非標準の拡張機能が使用されています: 'keyword' は互換性のために残されているキーワードです
コンパイラ警告 (レベル 1) C4227 旧形式が使用されています: 参照の修飾子は無視されます
コンパイラ警告 (レベル 1) C4228 非標準の拡張機能が使用されています: 宣言子リスト内のコンマの後の修飾子は無視されます
コンパイラ警告 (レベル 1、エラー) C4229 旧形式が使用されています: データ上の修飾子は無視されます
コンパイラ警告 (レベル 1) C4230 旧形式が使用されています: 修飾子/限定名 が混在している場合、限定名は無視されます
コンパイラ警告 (レベル 4) C4232 非標準の拡張機能が使用されています: 'identifier': dllimport 'dllimport' のアドレスは静的ではありません。一貫性が保証されません
コンパイラ警告 (レベル 1、エラー) C4233 非標準の拡張機能が使用されています: 'keyword' キーワードは C ではなく、C++ でのみサポートされます
コンパイラ警告 (レベル 4、エラー) C4234 非標準の拡張機能が使用されています: 'keyword' キーワードは将来使用するために予約されています
コンパイラ警告 (レベル 1、エラー) C4235 非標準の拡張機能が使用されています: 'keyword' キーワードがこのアーキテクチャ上でサポートされていません
コンパイラ警告 (レベル 1) C4237 'keyword' キーワードはサポートされていませんが、将来使用するために予約されています
コンパイラ警告 (レベル 4) C4238 非標準の拡張機能が使用されています: rvalue クラスが lvalue として使用されています
コンパイラ警告 (レベル 4) C4239 非標準の拡張機能が使用されています: 'token': 'type1' から 'type2' への変換
コンパイラ警告 (レベル 3) C4240 非標準の拡張機能が使用されています: 'classname' へのアクセスは 'access_specifier1' として定義されています (以前は 'access_specifier2' として定義されていました)
コンパイラ警告 (レベル 3、オフ) C4242 'identifier': 'type1' から 'type2' への変換で、データ消失の可能性があります
コンパイラ警告 (レベル 3) C4243 'type1' から 'type2' の conversion_type 変換は存在しますが、アクセスできません
コンパイラ警告 (レベル 2) C4244 'conversion_type': 'type1' から 'type2' への変換。データ損失の可能性があります
コンパイラ警告 (レベル 2、レベル 3、およびレベル 4) C4244 'conversion_type': 'type1' から 'type2' への変換。データ損失の可能性があります
コンパイラ警告 (レベル 4) C4245 'conversion_type': 'type1' から 'type2' への変換。符号付き/符号なしが一致しません
コンパイラ警告 (レベル 2) C4250 'classname': 優先順位による 'base_classname::member' の継承
コンパイラ警告 (レベル 2) C4251 'object_type1' 'identifier1' には、'identfier2' のクライアントが使用するための dll インターフェイスが必要です
コンパイラ警告 (レベル 4、オフ) C4254 'operator': 'type1':'field_bits' から 'type2':'field_bits' への変換。データ損失の可能性があります
コンパイラ警告 (レベル 4, off) C4255 'function': 関数プロトタイプがありません: '()' を '(void)' に変換します
コンパイラ警告 (レベル 4) C4256 'function': 仮想基底クラスを含むクラス用コンストラクターは '...' を含んでいます。呼び出しが旧バージョンの Visual C++ と互換性がない可能性があります
コンパイラ警告 (レベル 1) C4258 'variable': for ループからの定義は無視されます。外側のスコープからの定義が使われます
コンパイラ警告 (レベル 4, off) C4263 'function': メンバー関数はどの基底クラスの仮想メンバー関数もオーバーライドしません
コンパイラ警告 (レベル 4, off) C4264 'virtual_function': 仮想メンバー関数用に基底クラス 'classname' から使用可能なオーバーライドはありません。関数は非表示になります
コンパイラ警告 (レベル 3, off) C4265 'classname': クラスには仮想関数がありますが、その非自明なデストラクターは仮想ではありません。このクラスのインスタンスは正しく破棄されない可能性があります
コンパイラ警告 (レベル 4、オフ) C4266 'virtual_function': 仮想メンバー関数用に基底クラス 'classname' から使用可能なオーバーライドはありません。関数は非表示になります
コンパイラ警告 (レベル 3) C4267 'variable': 'size_t' から 'type' への変換。データ損失の可能性があります
コンパイラ警告 (レベル 4) C4268 'identifier' : コンパイラが生成した既定のコンストラクターで初期化された 'const' 静的/グローバル データは、オブジェクトをゼロで埋めます
コンパイラ警告 (レベル 1) C4269 'identifier' : コンパイラが生成した既定のコンストラクターで初期化された 'const' 自動データは、信頼できない結果をもたらします
コンパイラ警告 (レベル 1) C4272 'function': __declspec(dllimport) とマークされています。関数をインポートするときは、ネイティブ呼び出し規約を指定しなければなりません。
コンパイラ警告 (レベル 1) C4273 'function' : dll リンケージが一貫していません
コンパイラ警告 (レベル 1) C4274 #ident は無視されます。#pragma comment(exestr, 'string') に関するドキュメントを参照してください
コンパイラ警告 (レベル 2) C4275 dll インターフェイスではない classkey 'identifier1' が、dll インターフェイス classkey 'identifier2' のベースとして使用されています
コンパイラ警告 (レベル 1) C4276 'function' : プロトタイプがありません。引数がないと仮定します
コンパイラ警告 (レベル 1) C4277 インポートされたアイテム'classname::member' がデータ メンバーおよび関数メンバーの両方に存在します。データ メンバーは無視されました
コンパイラ警告 (レベル 3 およびレベル 4) C4278 'identifier': タイプ ライブラリ 'library' の識別子は既にマクロです。'rename' 修飾子を使用してください
コンパイラ警告 (レベル 3 およびレベル 4) C4279 'identifier': タイプ ライブラリ 'library' の識別子はキーワードです。'rename' 修飾子を使用してください
コンパイラ警告 (レベル 3) C4280 'operator ->' は、型 'type' を介した自己再帰的なものでした
コンパイラ警告 (レベル 3) C4281 型 'type1' を介して 'operator ->' 再帰が発生しました
コンパイラ警告 (レベル 3) C4282 その後、型 'type2' を使用します
コンパイラ警告 (レベル 3) C4283 そして、型 'typeN' を使用します
コンパイラ警告 (レベル 2) C4285 infix 表記を使用して適用された場合、'identifier::operator ->' の戻り値の型は再帰的になります
コンパイラ警告 (レベル 1) C4286 'derived_type': '%$T': 基底クラス ('base_type') によってキャッチされました (line_number 行)
コンパイラ警告 (レベル 3、オフ) C4287 'operator': 符号なし/負の定数が一致しません
コンパイラ警告 (レベル 1) C4288 非標準の拡張が使用されています: 'variable': for-loop 内で宣言したループ コントロール変数が for-loop スコープの外側で使用されています。外側のスコープの宣言と競合しています
コンパイラ警告 (レベル 4、オフ) C4289 非標準の拡張が使用されています: 'variable': for-loop 内で宣言したループ コントロール変数が for-loop スコープの外側で使用されています
コンパイラ警告 (レベル 3) C4290 C++ の例外の指定は、関数が __declspec(nothrow) でないことを示す以外は無視されます
コンパイラ警告 (レベル 1) C4291 'declaration': 一致する演算子 delete が見つかりません。初期化により例外がスローされると、メモリが解放されません
コンパイラ警告 (レベル 1) C4293 'shift_operator' : シフト数が負の値であるか大きすぎます。定義されていない動作です
コンパイラ警告 (レベル 4) C4295 'array': 配列が小さすぎるため、終端の nulll 文字を含めることができません
コンパイラ警告 (レベル 4、オフ) C4296 'operator': expression は常に boolean_value です
コンパイラ警告 (レベル 1) C4297 'function': 例外をスローしないはずだがそれをする関数
コンパイラ警告 (レベル 4) C4298 'identifier': タイプ ライブラリ 'library' の識別子は既にマクロです。'__identifier' に名前を変更します
コンパイラ警告 (レベル 4) C4299 'identifier': タイプ ライブラリ 'library' の識別子はキーワードです。'__identifier' に名前を変更します
コンパイラ警告 C4301 'derived_class::function': オーバーライドする仮想関数と 'base_class::function' の違いは const/volatile 修飾子のみです
コンパイラ警告 (レベル 2) C4302 'conversion': 'type1' から 'type2' へ切り詰めます
コンパイラ警告 (出力されなくなりました) C4303 'type1' から 'type2' への C スタイルのキャストは非推奨です。static_cast__try_cast、または dynamic_cast を使用してください
コンパイラ警告 (レベル 1、レベル 2、およびレベル 4) C4305 'conversion': 'type1' から 'type2' へ切り詰めます
コンパイラ警告 (レベル 4) C4306 'conversion': 'type1' からより大きいサイズの 'type2' への変換
コンパイラ警告 (レベル 2) C4307 'operator': 署名された整数定数のオーバーフロー
コンパイラ警告 (レベル 2) C4308 負の整数定数が符号なしの型に変換されました
コンパイラ警告 (レベル 2) C4309 'conversion' : 定数値が切り捨てられました
コンパイラ警告 (レベル 4) C4310 キャストによって定数値が切り捨てられました
コンパイラ警告 (レベル 1) C4311 variable': 'type1' から 'type2' へのポインター切り詰め
コンパイラ警告 (レベル 1) C4312 'operation': 'type1' からより大きいサイズの 'type2' への変換
コンパイラ警告 (レベル 1) C4313 'function' : 書式指定文字列内の '%format_specifier' が引数 'argument_number' (型 'type' ) と競合しています
コンパイラ警告 C4314 pragma パラメーターに '32' または '64' が必要です
コンパイラ警告 (レベル 4) C4315 'classname': コンストラクターが予期したように、メンバー 'member' の 'this' ポインターが alignment にアラインされていない可能性があります
コンパイラ警告 (レベル 3) C4316 'identifier': ヒープ上で割り当てられているオブジェクトが alignment にアラインされていない可能性があります
コンパイラ警告 (レベル 1) C4317 'printf_family': 書式指定文字列として渡された引数が不足しています
コンパイラ警告 C4318 memset に対する長さとして定数ゼロを渡します
コンパイラ警告 (レベル 1) C4319 'operator' : 'type1' からより大きいサイズの 'type2' へのゼロ拡張
コンパイラ警告 (レベル 1) C4321 インターフェイス 'interface' に対して自動的に IID を作成します
コンパイラ警告 (レベル 1) C4322 クラス 'class' に対して自動的に CLSID を作成します
コンパイラ警告 (レベル 1) C4323 クラス 'class' に対して登録された CLSID を再利用します
コンパイラ警告 (レベル 4) C4324 'structname': アラインメント指定子が原因で構造体が埋め込まれました
コンパイラ警告 (レベル 1) C4325 標準セクション 'section' に対する属性が無視されました
コンパイラ警告 (レベル 1) C4326 'function' の戻り値の型は、'type2' ではなく 'type1' でなければなりません
コンパイラ警告 C4327 'assignment': LHS ('alignment1') の間接アラインメントは、RHS ('alignment2') を超えています
コンパイラ警告 C4328 'function': 仮引数 parameter_number (parameter_alignment) の間接アラインメントは、実引数アラインメント (argument_alignment) を超えています
コンパイラ警告 (レベル 1) C4329 アラインメント指定子は列挙型で無視されます
コンパイラ警告 (レベル 1) C4330 セクション 'section' の属性 'attribute' が無視されました
コンパイラ警告 (レベル 1) C4333 'shift_operator': 右シフトの回数が多すぎます。データ損失の可能性があります
コンパイラ警告 (レベル 3) C4334 'shift_operator': 32 ビット シフトの結果が暗黙的に 64 ビットに変換されました (64 ビット シフトに意図的に変換しようとしましたか?)
コンパイラ警告 (レベル 1) C4335 Mac ファイル形式が検出されました: ソース ファイルを DOS または UNIX のいずれかの形式に変換してください
コンパイラ警告 (レベル 4) C4336 クロスリファレンス型タイプ ライブラリ 'library1' をインポートしてから 'library2' をインポートします
コンパイラ警告 (レベル 4) C4337 'library2' 内のクロスリファレンス型タイプ ライブラリ 'library1' は自動的にインポートされます
コンパイラ警告 (レベル 4) C4338 #pragma directive: 標準セクション 'section' が使用されています
コンパイラ警告 (レベル 4、オフ) C4339 'type': 未定義の型の使用が 'WinRT|CLR' meta-data で検出されました。この型を使用するとランタイム例外が発生する可能性があります
コンパイラ警告 (レベル 1) C4340 'value': 正の値から負の値へ折り返しました
コンパイラ警告 (レベル 1、オフ、出力されなくなりました) C4342 動作変更: 'function' が呼び出されますが、前のバージョンではメンバー演算子が呼び出されていました
コンパイラ警告 (レベル 4) C4343 #pragma optimize("g",off)/Og オプションをオーバーライドします
コンパイラ警告 (レベル 1) C4344 動作変更: 明示的テンプレート引数を使用すると 'function' の呼び出しを行います
コンパイラ警告 (レベル 1) C4346 'name' : 依存名が型ではありません
コンパイラ警告 (レベル 1) C4348 'type': 既定のパラメーターの再定義です: パラメーター parameter_number
コンパイラ警告 (レベル 1、オフ、出力されなくなりました) C4350 動作変更: 'member1' が 'member2' の代わりに呼び出されました
コンパイラ警告 (レベル 1) C4352 'identifier': 組み込み関数は既に定義されています
コンパイラ警告 (レベル 1) C4353 非標準の拡張機能が使用されています: 関数式として定数 0 が使用されています。 代わりに、'__noop' 関数組み込みを使用してください
コンパイラ警告 (レベル 1 およびレベル 4、オフ) C4355コンパイラ警告 (レベル 1 およびレベル 4) C4355 'this' : ベース メンバー初期化リストで使用されました
コンパイラ警告 (レベル 2) C4356 'member': 静的データ メンバーは派生クラスを使って初期化できません
コンパイラ警告 (レベル 3) C4357 'function' の生成時に無視されたデリゲート 'delegate' に対する仮引数リストで、param 配列引数が見つかりました
コンパイラ警告 (レベル 1) C4358 'operator': 複合デリゲートの戻り値の型が 'void' ではありません。返された値は定義されていません
コンパイラ警告 (レベル 1 and レベル 3) C4359 'type': アライメント指定子は実際のアラインメント (alignment) より小さいため、無視されます。
コンパイラ警告 (レベル 2) C4362 'type': 8 バイトより大きいアラインメントは、CLR によってサポートされていません
コンパイラ警告 (レベル 1) C4364 アセンブリ 'assembly' の #using は既に location(line_number) で as_friend 属性を指定せずに使用されました。as_friend は適用されません
コンパイラ警告 (レベル 4、オフ) C4365 'expression': 'type1' から 'type2' への変換。符号付き/符号なしが一致しません
コンパイラ警告 (レベル 4) C4366 'operator' 単項演算子の結果が、整列されていない可能性があります
コンパイラ警告 (レベル 3) C4367 'type1' から 'type2' に変換することで、データ型の不整合例外が発生する可能性があります
コンパイラ警告 (レベル 1、エラー) C4368 'member' をマネージド 'type' のメンバーとして定義できません。混合型はサポートされていません
コンパイラ警告 (レベル 1) C4369 'enumerator': 列挙値 'value' は 'type' として表示できません。値は 'new_value' です
コンパイラ警告 (レベル 4、出力されなくなりました) C4370 'classname': パッキングの改善により、前バージョンのコンパイラからクラスのレイアウトが変更されました
コンパイラ警告 (レベル 3、オフ) C4371 'classname': メンバー 'member' のパッキングの改善により、クラスのレイアウトが、前バージョンのコンパイラから変更された可能性があります
コンパイラ警告 (レベル 4) C4373 'function': 仮想関数が 'base_class_function' をオーバーライドします。以前のバージョンのコンパイラでは、パラメーターが const/volatile 修飾子でのみ異なる場合、オーバーライドされませんでした
コンパイラ警告 (レベル 1) C4374 'function1': インターフェイス メソッドは、仮想でないメソッド 'function2' では実装されません
コンパイラ警告 (レベル 1) C4375 パブリックでないメソッド 'method2' は 'method2' をオーバーライドしません
コンパイラ警告 (レベル 1) C4376 アクセス指定子 'specifier1specifier2:' はサポートされていません。'new_specifier:' を使用してください
コンパイラ警告 (レベル 1) C4377 ネイティブ型は、既定値がプライベートに指定されています。-d1PrivateNativeTypes は使用できません
コンパイラ警告 (レベル 1) C4378 初期化子を実行するために、関数ポインターを取得しなければなりません。System::ModuleHandle::ResolveMethodHandle の使用を検討してください
コンパイラ警告 (レベル 1) C4379 共通言語ランタイムのバージョン 'version_number' は、このコンパイラによってサポートされていません。 このバージョンを使用すると、予期しない結果が生じる可能性があります
コンパイラ警告 (レベル1、エラー) C4380 'class': 既定のコンストラクターを使用できません
コンパイラ警告 (レベル 1) C4381 'function1': インターフェイス メソッドは、パブリックでないメソッド 'function2' では実装されません
コンパイラ警告 (レベル 1) C4382 'type' をスローします: __clrcall デストラクターを伴う型、またはコピー コンストラクターは /clr:pure モジュールでのみキャッチできます
コンパイラ警告 (レベル 1) C4383 'instance_dereference_operator': ユーザー定義の 'instance_dereference_operator' 演算子が存在する場合、ハンドルを逆参照することの意味が変わる可能性があります。演算子は、オペランドに関して明示的になるように、静的関数として書いてください
コンパイラ警告 (レベル 1) C4384 #pragma 'pragma_name' はグローバル スコープでのみ使用できます
コンパイラ警告 (レベル 3) C4387 'alternative': これが検討されました
コンパイラ警告 (レベル 4、オフ) C4388) 'expression': 符号付き/符号なしが一致しません
コンパイラ警告 (レベル 4) C4389 'operator': 符号付き/符号なしが一致しません
コンパイラ警告 (レベル 3) C4390 ';': 制御が空のステートメントが見つかりました。意図した記述ですか?
コンパイラ警告 (レベル 1) C4391 'function_signature': 組み込み関数に対して戻り値の型が無効です。'type' が必要です
コンパイラ警告 (レベル 1、エラー) C4392 'function_signature': 組み込み関数に対して引数の数が無効です。'argument_count' 引数が必要です
コンパイラ警告 (レベル 1) C4393 'variable': const は literal データ メンバーには影響しません。これは無視されます
コンパイラ警告 (レベル 1、エラー) C4394 'function': appdomain ごとのシンボルは __declspec(dllexport) と共に設定することはできません
コンパイラ警告 (レベル 1) C4395 'function' : メンバー関数は、initonly データ メンバー 'member' のコピーで呼び出されます
コンパイラ警告 (レベル 2) C4396 'function': フレンド宣言が関数の特殊化を参照している場合、テンプレートのインライン指定子を使用できません
コンパイラ警告 (レベル 1) C4397 DefaultCharSetAttribute は無視されます
コンパイラ警告 (レベル 3) C4398 'variable' : プロセスごとのグローバル オブジェクトは複数の appdomain と共に動作しない可能性があります。__declspec(appdomain) を使用することを検討してください
コンパイラ警告 (レベル 1、エラー) C4399 'symbol' : プロセスごとのシンボルは、/clr:pure と共にコンパイルされるときに、__declspec(dllimport) と共に設定することはできません

関連項目

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