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

Данное диагностическое правило основано на руководстве [MISRA](https://misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Это правило актуально только для C\.

Анализатор обнаружил в коде объявление типа функции с использованием квалификаторов `const`, `volatile`, `restrict` или `_Atomic`\. При использовании такого типа поведение программы не определено\.

**Примечание\.** Правило проверяет именно декларируемый тип функции, а не возвращаемый тип функции\.

Пример кода, на котором анализатор сгенерирует предупреждения:

```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;             // <=
}
```

Для правильной работы программы следует убрать квалификатор `const` при определении типа функции\. Таким образом, корректный код выглядит так:

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