AUTOSAR C++14 Rule A4-10-1

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

Описание

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

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

Объяснение

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

  • nullptr может использоваться с любым типом null-указателя, не требуя неявного приведения.

  • nullptr literals допускает переадресацию параметров при помощи функции шаблона.

NULL - макрос, который расширяется до целого числа 0 который приведен в void* тип. Использование NULL или 0 указание на нулевые указатели противоречит ожиданиям разработчиков. Если код ожидает nullptr встречается NULL или 0 вместо этого это может привести к путанице или неожиданному поведению.

Реализация Polyspace

Polyspace® флаги использования NULL или 0 вместо nullptr для указания пустого указателя. Это правило не проверяет преобразование между NULL и 0. См. AUTOSAR C++14 Rule M4-10-1.

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

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

Примеры

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

#include <cstdint>
#include <cstddef>


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

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

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

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

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