Typedef が一致しません
typedef
ステートメント間の不一致
説明
このチェッカーは、既定の Polyspace® as You Code 解析では非アクティブにされます。Polyspace as You Code 解析で非アクティブにされるチェッカー (Polyspace Access)を参照してください。
この欠陥は、typedef
ステートメントが以下のいずれかのデータ型の潜在型と競合する可能性がある場合に発生します。
size_t
ssize_t
wchar_t
ptrdiff_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 で導入