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

V2637. MISRA. A 'noreturn' function should have 'void' return type.

04 Апр 2025

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

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

Функция, задекларированная со спецификатором _Noreturn (C11) или атрибутом [[noreturn]] (C23), не должна возвращать управление, так как это приведёт к неопределённому поведению. Следовательно, она не может вернуть никакого значения после её вызова, и её возвращаемый тип должен быть void.

Анализатор формирует предупреждение, когда обнаруживает у noreturn функции возвращаемый тип, отличный от void. Это подозрительный код, который может быть следствием опечатки или ошибки при проектировании.

Пример кода, на который анализатор выдаст предупреждение:

_Noreturn int sum(int a, int b) // _Noreturn is a typo
{
  return a + b; // undefined behavior
}

В синтетическом примере выше спецификатор _Noreturn был поставлен по ошибке. Чтобы убрать предупреждение анализатора, достаточно удалить лишний спецификатор:

int sum(int a, int b)
{
  return a + b;
}

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

  • MISRA-C-17.10