This diagnostic rule is based on the MISRA (Motor Industry Software Reliability Association) software development guidelines.
This diagnostic rule is relevant only for C.
The analyzer has detected that a function type is declared in the code using const
, volatile
, restrict
or _Atomic
qualifiers. When such a type is used, the program behavior is undefined.
Note. The rule checks the declared function type, not the return type.
The code example where the analyzer issues warnings:
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; // <=
}
To ensure proper functionality, the 'const' qualifier should be removed when declaring the function type. The fixed code:
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
}