V1117. The declared function type is cv-qualified. The behavior when using this type is undefined.
Анализатор обнаружил в коде на языке C определение типа функции с использованием квалификаторов 'const' или 'volatile'. Согласно пункту 10 параграфа 6.7.4.1 стандарта С23, при использовании таких типов поведение не определено.
Пример кода, на котором анализатор сгенерирует предупреждения:
typedef int fun_t(void);
typedef const fun_t const_qual_fun_t; // V1117
typedef const fun_t * ptr_to_const_qual_fun_t; // V1117
void foo()
{
const fun_t c_fun_t; // V1117
const fun_t * ptr_c_fun_t; // V1117
}
Для правильной работы программы следует убрать квалификатор 'const' при определении типа функции. Таким образом, корректный код выглядит так:
typedef int fun_t(void);
typedef fun_t const_qual_fun_t; // ok
typedef fun_t * ptr_to_const_qual_fun_t; // ok
void foo()
{
fun_t c_fun_t; // ok
fun_t * ptr_c_fun_t; // ok
}