Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2627. MISRA. Function type should...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2627. MISRA. Function type should not be type qualified.

07 Фев 2025

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Это правило актуально только для C.

Анализатор обнаружил в коде объявление типа функции с использованием квалификаторов const, volatile, restrict или _Atomic. При использовании такого типа поведение программы не определено.

Примечание. Правило проверяет именно декларируемый тип функции, а не возвращаемый тип функции.

Пример кода, на котором анализатор сгенерирует предупреждения:

typedef int fun_t(void);

typedef const fun_t qual_fun_t;          // <=

typedef const fun_t * ptr_to_qual_fun_t; // <=

void foo()
{
  const fun_t c_fun_t;                   // <=
  const fun_t * ptr_c_fun_t;             // <=
}

Для правильной работы программы следует убрать квалификатор const при определении типа функции. Таким образом, корректный код выглядит так:

typedef int fun_t(void);

typedef fun_t qual_fun_t;          // ok

typedef fun_t * ptr_to_qual_fun_t; // ok

void foo()
{
  fun_t c_fun_t;                    // ok
  fun_t * ptr_c_fun_t;              // ok
}

Данная диагностика классифицируется как:

  • MISRA-C-17.13