Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2660. MISRA. A function declared...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2660. MISRA. A function declared with a _Noreturn specifier should not return to its caller.

24 Сен 2025

Диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Правило актуально только для языка C.

Спецификатор _Noreturn указывает компилятору, что функция не возвращает управление в место вызова ни на каком из путей выполнения. Нарушение этого контракта ведёт к неопределённому поведению (C11, п. 6.7.4.8 и Annex J2).

Пример некорректного кода:

_Noreturn void foo(int x)
{
  if (x != 0)
    abort();
}

В данном примере при равенстве значения параметра x нулю foo вернёт управление вызывающей функции, что противоречит спецификатору _Noreturn.

Корректный код:

_Noreturn void foo(int x)
{
  abort();
}

Данная диагностика классифицируется как:

  • MISRA-C-2011-16.1
  • MISRA-C-2023-16.1