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

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

Описание

Управляйте определением

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

Объяснение

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

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

Реализация Polyspace

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

Обменивайтесь сообщениями в отчете

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

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

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

#include <cstddef>

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

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

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

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

Группа: стандартные преобразования
Категория: необходимый

Введенный в R2018a