MISRA C++:2008 Rule 4-10-2

Буквальный нуль (0) не должен использоваться в качестве нуль-указателя-константы

Описание

Определение правила

Литерал с нулем (0) не должен использоваться в качестве константы с нулевым указателем.

Объяснение

В C++ можно использовать литералы 0 и NULL как целое число, так и константу указателя на ядро. Однако использование 0 в качестве константы указателя null или NULL в качестве целого числа может вызвать путаницу разработчика.

Это правило ограничивает использование литерала 0 целыми числами. MISRA C++:2008 Rule 4-10-1 ограничивает использование NULL константами указателя со значением NULL.

Реализация Polyspace

Контрольный флажок присваивает 0 переменной указателя или двоичным операциям с 0 и указателем. Назначения могут быть прямыми или косвенными, такими как передача 0 в качестве аргумента указателя на функцию.

Поиск и устранение проблем

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

#include <cstddef>

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

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

В этом примере использование 0 в качестве аргумента для checkPointer функция не совместима, потому что функция ожидает int * аргумент.

Проверяйте информацию

Группа: Стандартные Преобразования
Категория: Требуемая
Введенный в R2018a