MISRA C:2023 Rule 11.9
The macro NULL shall be the only permitted form of integer null pointer constant
R2024a 以降
説明
ルール定義
The macro NULL shall be the only permitted form of integer null pointer constant 1 .
根拠
以下の式では null ポインター定数を使用できます。
ポインターへの代入
==または!=演算で、一方のオペランドがポインターである?:演算で、: のいずれかの側のオペランドがポインターである
0 ではなく NULL を使用すると null ポインター定数の使用を意図しているのが明確になります。
Polyspace 実装
チェッカーは、ポインターへの定数 0 の代入、ポインターを定数 0 と比較する等式 (または不等式)、および MISRA C™:2012 のドキュメンテーションで一覧されている他の同様の式にフラグを設定します。
MISRA C:2012 Technical Corrigendum 1 での更新以降、チェッカーはポインターのみを含む集合体 (たとえばポインターの配列や、ポインター フィールドのみが含まれる構造体 (または共用体) など) を初期化するための {0} の使用を許容するようになっています。集合体に複数のフィールドが含まれる場合は、引き続き初期化にフラグが設定されます。この場合、ポインター フィールドにはマクロ NULL、整数フィールドには 0 を使用して、フィールドを区別してください。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: Pointer Type Conversions |
| カテゴリ: 必要 |
| AGC カテゴリ: Readability |
バージョン履歴
R2024a で導入
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.