exponenta event banner

Правило AUTOSAR C++ 14 A7-1-3

CV-квалификаторы должны размещаться справа от типа, который является typedef или using name

Описание

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

Классификаторы CV должны располагаться справа от типа, который является typedef или using name.

Объяснение

Предположим, что typedef или using оператор определяет тип указателя. Например:

using IntPtr = std::int32_t*;
A const-квалификация типа, записанного как:
const IntPtr ptr = &someValue;
В результате этого расширения:
const (std::int32_t*) ptr = &someValue;
В этом выражении ptr является постоянным указателем, который не может быть переназначен в другую ячейку памяти. Однако разработчик или рецензент может ожидать такого расширения:
(const std::intr32_t) *ptr = &someValue;
В этом выражении ptr является указателем на константу, что означает, что содержимое местоположения ptr указывает на, или *ptr, не может быть изменено.

Чтобы избежать этой путаницы, поместите const или volatile квалификатор справа от типа данных, определенного с помощью typedef или using. Например:

IntPtr const ptr = &someValue;
Единственным возможным расширением этого выражения является:
std::intr32_t const *ptr = &someValue;
который делает ptr постоянный указатель.

Внедрение Polyspace

Средство проверки помечает ситуации, когда const или volatile квалификаторы размещаются в левой части типов данных, определяемых посредством typedef или using заявления.

Средство проверки помечает как типы данных указателей, так и типы данных без указателей.

Поиск неисправностей

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

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

Группа: Выражения
Категория: Обязательно, Автоматизировано
Представлен в R2019a