>
>
>
V1117. The declared function type is cv…


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
}