exponenta event banner

Правило AUTOSAR C++ 14 A4-10-1

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

Описание

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

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

Объяснение

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

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

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

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