Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Данное диагностическое правило основано на руководстве 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
}
Диагностическое правило классифицируется как:
|
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: