V2627. MISRA. Function type should not be type qualified.
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
}