メインコンテンツ

AUTOSAR C++14 Rule M4-10-1

NULL shall not be used as an integer value

説明

ルール定義

NULL shall not be used as an integer value

根拠

C++ では、リテラル 0 と NULL のどちらも整数と NULL ポインター定数として使用できます。ただし、0 を NULL ポインター定数として使用したり、NULL を整数として使用したりすると、開発者が混乱する可能性があります。

このルールは、NULL の使用を NULL ポインター定数に限定します。AUTOSAR C++14 Rule M4-10-2 は、リテラル 0 の使用を整数に限定します。

Polyspace 実装

チェッカーは、整数変数への NULL の代入または NULL と整数を含む二項演算にフラグを設定します。代入は、直接代入の場合も、NULL を整数引数として関数に渡すような間接代入の場合もあります。

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

#include <cstddef>

void checkInteger(int);
void checkPointer(int *);

void main() {
    checkInteger(NULL); //Noncompliant
    checkPointer(NULL); //Compliant
}

この例で、関数 checkIntegerint 型の引数を想定しているため、この関数の引数として NULL を使用するのは非準拠です。

チェック情報

グループ: 標準変換
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入