Microsoft C/C++ コンパイラの警告 C4800 - C4999

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

重要

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

警告メッセージ

警告 メッセージ
コンパイラの警告 (レベル 4、オフ) C4800 'type' から bool への暗黙の型変換です。 情報が損失している可能性があります
コンパイラの警告 C4801 参照渡しは検証可能ではありません: message
コンパイラの警告 (レベル 1) C4803 'method': raise メソッドはイベントのストレージ クラスとは異なるストレージ クラスを持っています。'event'
コンパイラの警告 (レベル 1) C4804 'operation': 演算中の 'bool' 型の使用方法が安全ではありません
コンパイラの警告 (レベル 1) C4805 'operation': 演算中の 'type1' 型と 'type2' 型の混用は安全ではありません
コンパイラの警告 (レベル 1) C4806 'operation': 安全でない演算: 'type1' 型から 'type2' 型への上位変換を行うと与えられた定数に等しくなりません
コンパイラの警告 (レベル 1) C4807 'operation': 'type1' 型と符号付きビット フィールド型 'type2' の混用は安全ではありません
コンパイラの警告 (レベル 1) C4808 case 'value' は 'bool' 型の switch ラベルには不適切です
コンパイラの警告 (レベル 1) C4809 switch 文に冗長な 'default' ラベルが存在します。可能な 'case' 条件はすべて記述されています
コンパイラの警告 (レベル 1) C4810 pragma pack(show) の値 == n
コンパイラの警告 (レベル 1) C4811 pragma conform(forScope, show) の値 == value
コンパイラの警告 (レベル 1) C4812 旧形式の宣言スタイル: 'new_syntax' を使用してください
コンパイラの警告 (レベル 1) C4813 'function': ローカル クラスの friend 関数が宣言されていません
コンパイラの警告 (レベル 4) C4815 'object name': スタック オブジェクトにある、サイズが 0 の配列には要素がありません (オブジェクトが、集約初期化された集約である場合を除く)
コンパイラの警告 (レベル 4) C4816 'param': パラメーターにはサイズが 0 の配列があります。切り捨てられます。(オブジェクトが参照によって渡される場合を除く)
コンパイラの警告 (レベル 1) C4817 'member': このメンバーにアクセスするのに '.' が不適切に使用されています。コンパイラは '->' に置き換えられます
コンパイラの警告 (レベル 1) C4819 ファイルは、現在のコード ページ (number) で表示できない文字を含んでいます。 データの損失を防ぐために、ファイルを Unicode 形式で保存してください
コンパイラの警告 (レベル 4、オフ) C4820 'bytes' バイトのパディングをコンスラクト 'member_name' の後に追加しました
コンパイラの警告 (レベル 1) C4821 Unicode エンコードの種類を指定できません。シグネチャ (BOM) つきファイルを保存してください
コンパイラの警告 (レベル 1、オフ) C4822 'member function': ローカル クラスのメンバー関数は本体がありません
コンパイラの警告 (レベル 3) C4823 'function': ピンされたポインターを使用していますが、アンワインド セマンティクスは有効にはなりません。 /EHa を使用してください
コンパイラの警告 (レベル 2、オフ) C4826 'type1' から 'type2' への変換は符号拡張されています。 これは、予期しない実行時の動作を発生させる可能性があります。
コンパイラの警告 (レベル 3) C4827 パラメーターが指定されていない 'ToString' パブリック メソッドは、virtual および override に設定する必要があります
コンパイラの警告 (レベル 1) C4828 オフセット 0xHexOffset から始まる、現在のソースの文字セット (コードページ codepage) では使用できない文字がファイルに含まれています。
コンパイラの警告 (レベル 1) C4829 関数 main への正しくないパラメーターである可能性があります。 'int main(Platform::Array<Platform::String^>^ argv)' を使用してください
コンパイラ警告 (レベル 1) C4834 'nodiscard' 属性を持つ関数の戻り値を破棄しています
コンパイラの警告 (レベル 1) C4835 'variable': マネージ コードがホスト アセンブリでまず最初に実行されるまで、エクスポートされたデータの初期化子は実行されません
コンパイラの警告 (レベル 4、オフ) C4837 検出されたトライグラフ '??character' は 'character' に置き換えられました
コンパイラの警告 (レベル 1) C4838 'type_1' から 'type_2' への変換には縮小変換が必要です
コンパイラの警告 (レベル 3) C4839 可変個引数関数の引数としての、クラス 'type' の標準でない使用法
コンパイラの警告 (レベル 4) C4840 可変個引数関数の引数としての、クラス 'type'の移植性のない使用法
コンパイラの警告 (レベル 4、オフ) C4841 非標準の拡張機能が使用されています: 複合メンバー指定子が offsetof で使用されています
コンパイラの警告 (レベル 4、オフ) C4842 多重継承を使用する型に対する 'offsetof' の適用結果は、コンパイラ リリース間において一貫性が保証されません
コンパイラの警告 (レベル 4) C4843 'type1: 配列または関数の型に対する参照の例外ハンドラーに到達できません。代わりに 'type2' を使用してください
コンパイラの警告 (レベル 1) C4844 'export modulemodule_name;' は、現在モジュール インターフェイスを宣言するために優先的に使用される構文です
コンパイラの警告 (レベル 4) C4845 '/d1initall[0|1|2|3]' がコマンド ラインで指定されていない場合、'__declspec(no_init_all)' は無視されます
コンパイラの警告 (レベル 4) C4846 'value' は '/d1initall' の有効な引数ではありません: コマンド ライン フラグが無視されました
コンパイラの警告 (レベル 4) C4847 '__declspec(no_init_all)' は、関数、クラス型、またはローカル変数にのみ適用できます: 無視されました
コンパイラの警告 (レベル 1) C4848 C++17 以前の標準属性 'no_unique_address' のサポートはベンダー拡張機能です
コンパイラの警告 (レベル 1) C4849 'directive' ディレクティブで OpenMP 'clause' 句が無視されました
コンパイラの警告 (レベル 1、エラー) C4854 参照に対して非参照の Null ポインターをバインドした場合の動作が定義されていません
コンパイラの警告 (レベル 1、オフ) C4855 'version' では '[=]' による 'this' の暗黙的なキャプチャは非推奨です
コンパイラの警告 (レベル 4) C4856 'value' は、'/d1initAll:FillPattern' の有効な引数ではありません (値は 0 から 255 までの数値でなければなりません)。 コマンドライン フラグが無視されました
コンパイラの警告 (レベル 1) C4857 C++/CLI モードは C++17 より新しい C++ のバージョンをサポートしていません。言語を /std:c++17 に設定しています
コンパイラの警告 (レベル 1) C4858 戻り値 function name を破棄しています
コンパイラの警告 (レベル 4) C4859 'value' は、'/presetWarn' の有効な引数ではありません。値は 0 より大きい 10 進数値でなければなりません。 コマンドライン フラグが無視されました
コンパイラの警告 (レベル 4) C4860 'object name': コンパイラで 'number' バイトのストレージがゼロ初期化されました
コンパイラの警告 (レベル 4) C4861 コンパイラで 'number' バイトのストレージがゼロ初期化されました
コンパイラの警告 (レベル 4) C4866 コンパイラでは、operator_name の呼び出しの評価順序を左から右方向に設定できない場合があります
コンパイラの警告 (レベル 1、エラー) C4867 'function': 関数呼び出しには引数リストがありません。メンバーへのポインターを作成するために 'call' を使用してください
コンパイラの警告 (レベル 4) C4868 'file(line_number)' コンパイラでは、中かっこで囲まれた初期化子リストの評価順序を左から右方向に設定できない場合があります
コンパイラの警告 (レベル 3) C4869 'nodiscard' を適用できるのはクラス、列挙型、関数に対してのみです
コンパイラの警告 (レベル 2) C4872 concurrency::parallel_for_each の呼び出し先をコンパイルするときに 0 による浮動小数点除算が検出されました (concurrency::parallel_for_each の位置: 'location')
コンパイラの警告 (レベル 1) C4880 'const type_1' から 'type_2' へのキャスト: ポインターまたは参照からキャストして const 性を除去すると、amp 制限関数で未定義の動作が発生する可能性があります
コンパイラの警告 (レベル 4) C4881 コンストラクターおよびデストラクターは、tile_static 変数 'variable-name' のために呼び出されません
コンパイラの警告 (レベル 1) C4882 非 const 呼び出し演算子を使用した関数を concurrency::parallel_for_each に渡す処理は推奨されません
コンパイラの警告 C4883 'function name': 関数のサイズでは最適化が省略されます
コンパイラの警告 C4900 'tool1' バージョン 'version1' と 'tool2' バージョン 'version2' の間の中間言語が一致しません
コンパイラの警告 (レベル 1、オフ) C4905 'LPSTR' にキャストされた幅の広いリテラル文字列
コンパイラの警告 (レベル 1、オフ) C4906 'LPWSTR' にキャストされたリテラル文字列
コンパイラの警告 (エラー) C4907 複数の呼び出し規則は指定できません。最後に指定されたものが使用されます
コンパイラの警告 (レベル 1) C4910 '<identifier>': 明示的なインスタンス化では '__declspec(dllexport)' と 'extern' は互換性がありません
コンパイラの警告 (レベル 1) C4912 'attribute': 属性は入れ子の UDT 上での動作が定義されていません
コンパイラの警告 (レベル 4) C4913 ユーザー定義のバイナリ演算子 ',' は存在しますが、すべてのオペランドに適用できるオーバーロードは見つかりませんでした。既定のビルドイン バイナリ演算子 ',' を使用します
コンパイラの警告 (レベル 1) C4916 dispid を指定するためには、'description' はインターフェイスによって導入されなければなりません
コンパイラの警告 (レベル 1、オフ) C4917 'declarator': GUID はクラス、インターフェイス、または名前空間のみに関連付けることができます
コンパイラの警告 (レベル 4) C4918 'character': 無効な文字がプラグマ最適化リスト内にあります
コンパイラの警告 (レベル 1) C4920 enum enum-name メンバー member_1=value_1 は、既に enum enum-name 内に member_2=value_2 として見つかりました
コンパイラの警告 (レベル 3) C4921 'description': 属性の値 'attribute' を複製指定しないでください
コンパイラの警告 (レベル 1) C4925 method': dispinterface メソッドはスクリプトから呼び出すことはできません
コンパイラの警告 (レベル 1) C4926 identifier': シンボルは既に定義されています。属性は無視されます
コンパイラの警告 (レベル 1) C4927 変換が正しくありません。複数のユーザー定義の変換が暗黙的に適用されています
コンパイラの警告 (レベル 1、オフ) C4928 コピー初期化が正しくありません。複数のユーザー定義の変換が暗黙的に適用されています。
コンパイラの警告 (レベル 1) C4929 'file': タイプライブラリは共用体を含みます。'embedded_idl' 修飾子を無視します
コンパイラの警告 (レベル 1) C4930 'prototype': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?)
コンパイラの警告 (レベル 4、オフ) C4931 number ビット ポインター用にタイプ ライブラリがビルドされていることを想定します
コンパイラの警告 (レベル 4) C4932 __identifier(identifier)__identifier(identifier) を区別できません
コンパイラの警告 (レベル 1) C4934 '__delegate(multicast)' の使用は現在推奨されていません。'__delegate' を使用してください
コンパイラの警告 (レベル 1) C4935 アセンブリ アクセス指定子が 'access' から変更されました
コンパイラの警告 (レベル 1、エラー) C4936 この __declspec は、/clr または /clr:pure でコンパイルされるときのみサポートされます
コンパイラの警告 (レベル 4) C4937 'text1' と 'text2' を、'directive' への引数として区別できません
コンパイラの警告 (レベル 4) C4938 'var': 浮動小数点の減少変数は、/fp:strict または #pragma fenv_access で矛盾する結果を生じさせる可能性があります
コンパイラの警告 C4939 #pragma vtordisp は非推奨とされます。今後の Visual C++ バージョンからは削除されます
コンパイラの警告 (レベル 1) C4944 'symbol': 'assembly1' からシンボルをインポートできません: 'symbol' は既に現在のスコープに存在します
コンパイラの警告 (レベル 1) C4945 symbol': 'assembly1' からシンボルをインポートできません: 'symbol' は既に別のアセンブリ 'assembly2' からインポートされています
コンパイラの警告 (レベル 1、オフ) C4946 reinterpret_cast が関連クラスの間で使用されました: 'class1' と 'class2'
コンパイラの警告 (レベル 1) C4947 'type_or_member': 古い形式に設定されています
コンパイラの警告 (レベル 2) C4948 'accessor' の戻り値の型が対応する setter の最後のパラメーターに一致しません
コンパイラの警告 (レベル 1 およびレベル 4) C4949 'managed' および 'unmanaged' のプラグマは、'/clr[:option]' でコンパイルされるときにのみ有効です
コンパイラの警告 (レベル 1、エラー) C4950 'type_or_member': 古い形式に設定されています
コンパイラの警告 (レベル 1) C4951 プロファイル データが収集されてから 'function' が編集されました、関数のプロファイル データは使用されません
コンパイラの警告 (レベル 1) C4952 'function': プログラム データベース 'pgd-file' にプロファイル データが見つかりません
コンパイラの警告 (レベル 1) C4953 プロファイル データが収集されてから、インライン 'function' が編集されました。プロファイル データは使用されません
コンパイラの警告 C4954 'function': プロファイルされません (__int64 スイッチ式を含んでいます)
コンパイラの警告 C4955 'import2': インポートは無視されます。'import1' から既にインポートされています
コンパイラの警告 (レベル 1、エラー) C4956 'type': この型は検証可能ではありません
コンパイラの警告 (レベル 1、エラー) C4957 'cast': 'cast_from' から 'cast_to' への明示的なキャストは検証可能ではありません
コンパイラの警告 (レベル 1、エラー) C4958 'operation': ポインター演算は検証可能ではありません
コンパイラの警告 (レベル 1、エラー) C4959 アンマネージ型 'type' は、そのメンバーへのアクセスによって検証不可能なコードを生成するため、/clr:safe で定義できません
コンパイラの警告 (レベル 4) C4960 'function' はプロファイルするには大きすぎます
コンパイラの警告 (レベル 1) C4961 プロファイル データが 'pgd-file' にマージされませんでした。ガイド付き最適化のプロファイルを無効にします
コンパイラの警告 (レベル 4、オフ) C4962 'function': 最適化によってプロファイル データに矛盾が生じたため、ガイド付き最適化のプロファイルを無効にします
コンパイラの警告 (レベル 1) C4963 'description': プロファイル データが見つかりません。別のコンパイラ オプションがインストルメント化されたビルドで使用されました
コンパイラの警告 (レベル 1) C4964 最適化のオプションが指定されませんでした。プロファイル情報は収集されません
コンパイラの警告 (レベル 1) C4965 整数 0 の暗黙的なボックスです。nullptr または明示的なキャストを使用してください
コンパイラの警告 (レベル 1) C4966 'function' には、サポートされていないセグメント名を含む __code_seg 注釈があります。注釈は無視されます
コンパイラの警告 C4970 delegate コンストラクター: 'type' がスタティックであるため、ターゲット オブジェクトは無視されます
コンパイラの警告 (レベル 1) C4971 引数の順序: delegate コンストラクターに対して、<ターゲット オブジェクト>、<ターゲット関数> の順序は使用できません。<ターゲット関数>、<ターゲット オブジェクト=""> の順序を使用してください
コンパイラの警告 (レベル 1、エラー) C4972 アンボックス操作の結果を左辺の値として扱う、または直接変更することは検証可能ではありません
コンパイラの警告 (レベル 1) C4973 'symbol': 非推奨として設定されています
コンパイラの警告 (レベル 1) C4974 'symbol': 非推奨として設定されています
コンパイラの警告 (レベル 1) C4975 modopt '[modifier]' は仮パラメーター 'parameter' に対して無視されました
コンパイラの警告 (レベル 1) C4976 数値 'value' は '/W' に対して正しくありません。既定の '1' を使用します。
コンパイラの警告 (レベル 3) C4981 Warbird: 関数 'function' は例外のセマンティクスを含んでいるため、インライン関数ではなく、__forceinline として記述されています
コンパイラの警告 (レベル 3) C4983 '/analyze:sarif:hashname' は無視されます。'/analyze:log' の引数はディレクトリではなく単一のファイルです
コンパイラの警告 C4984 'if constexpr' は C++17 の言語拡張です
コンパイラの警告 (レベル 4) C4985 'symbol_name': 前の宣言に属性が存在しません。
コンパイラの警告 (レベル 4、オフ) C4986 'declaration': 例外指定が以前の宣言と一致しません
コンパイラの警告 (レベル 4、オフ) C4987 非標準の拡張機能が使用されています: 'throw (...)'
コンパイラの警告 (レベル 4、オフ) C4988 'variable': 変数がクラス/関数スコープの外部で宣言されています
コンパイラの警告 (レベル 4) C4989 'type': 型に競合する定義があります。
コンパイラの警告 (レベル 3) C4990 Warbird: message
コンパイラの警告 (レベル 3) C4991 Warbird: インラインの保護レベルが親よりも高いため、関数 'function' はインライン関数ではなく、__forceinline として記述されています
コンパイラの警告 (レベル 3) C4992 Warbird: 関数 'function-name' は保護できないインライン アセンブリを含んでいるため、インライン関数ではなく、__forceinline として記述されています
コンパイラの警告 (レベル 3) C4995 'function': 名前が避けられた #pragma として記述されています
コンパイラの警告 (レベル 3) C4996 'deprecated-declaration': deprecation-message (または "deprecated と宣言されました")
コンパイラの警告 (レベル 1) C4997 'class': コクラスは COM インターフェイスまたは擬似インターフェイスを実装しません
コンパイラの警告 (レベル 1) C4998 予測は失敗しました: expectation(value)
コンパイラの警告 C4999 原因不明の警告 詳細については、Visual C++ ヘルプ メニューのサポート情報コマンドを選択してください。またはサポート情報ヘルプ ファイルを参照してください

関連項目

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