﻿# V2627\. MISRA\. Function type should not be type qualified\.

This diagnostic rule is based on the [MISRA](https://misra.org.uk/) \(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:

```cpp
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:

```cpp
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
}
```