Typedef が一致しません
typedef ステートメント間の不一致
説明
このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされます。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
この欠陥は、typedef ステートメントが以下のいずれかのデータ型の潜在型と競合する可能性がある場合に発生します。
size_tssize_twchar_tptrdiff_t
リスク
size_t、ssize_t、wchar_t または ptrdiff_t の潜在型を変更する場合、同じ型の定義との一貫性が損なわれます。インクルード パスが異なるコンパイル ユニットでは、異なるサイズの型を使用する可能性があり、プログラムで競合が発生する原因となる可能性があります。
たとえば、size_t を符号なし long 型として再定義する関数を 1 つのコンパイル ユニットで定義するとします。しかし、<stddef.h> の size_t 定義を使用する別のコンパイル ユニットで、extern 宣言して同じ関数を使用しています。プログラムで、関数宣言と関数定義の間に不一致が発生します。
修正方法
一貫性のある型定義を使用します。以下に例を示します。
これらの基本型に対するカスタム タイプ定義を削除します。システム定義のみ使用します。
すべてのコンパイル ユニットに同じサイズを使用します。
typedefを共有ヘッダー ファイルに移動します。
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: オン |
コマンド ライン構文: TYPEDEF_MISMATCH |
| 影響度: High |
バージョン履歴
R2016b で導入