AUTOSAR C++14 Rule A4-10-1

Только литерал nullptr должен использоваться в качестве ограничения нулевого указателя.

Описание

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

Только литерал nullptr должен использоваться в качестве ограничения нулевого указателя.

Объяснение

nullptr был введен на C++ 11, чтобы поддержать концепцию указателя, который не указывает на доступный объект. Перед C++ 11, макро-NULL и постоянный 0 был единственными способами задать постоянного нулевого указателя. Однако эти альтернативы nullptr может также использоваться в целочисленных контекстах и может вызвать потенциальный беспорядок.

Например, если функция перегружается с аргументом указателя и целым числом:

void foo(int);
void foo(int*);
использование аргумента NULL как:
foo(NULL);
может вызвать беспорядок, о котором вызвана функция. В этом примере называется перегрузка целочисленного аргумента, но разработчик или рецензент могут ожидать в противном случае.

Реализация Polyspace

Средство проверки правила отмечает использование NULL макрос или постоянный 0 как указатели (через прямое присвоение, броски или в противном случае).

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

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

Примеры

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

#include <cstdint>
#include <cstddef>


void foo(int*);
void foo2(int*);

void bar() {
    foo(NULL);    //Noncompliant
    foo2(0);      //Noncompliant
    foo(nullptr); //Compliant
}

В этом примере правило нарушено когда макро-NULL или постоянный 0 используется в качестве указателя.

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

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