Функции, объявленные с атрибутом [[noreturn]], не возвращаются
Функции, объявленные с атрибутом [[noreturn]], не возвращаются.
При объявлении функции с помощью [[noreturn]] , компилятор ожидает, что функция не возвращает поток выполнения. То есть, если [[noreturn]] функция f() вызывается из main(), то компилятор ожидает, что поток выполнения не будет возвращен main(). Если такая функция в конечном итоге возвращает поток выполнения, это приводит к неопределенному поведению, которое можно использовать для нарушения целостности данных.
Если функция не имеет return оператор, то заключительная закрывающая скобка функции подразумевает неявное return. Пропуск return оператор в функции не препятствует возврату потока выполнения. A [[noreturn]] функция может запретить возврат потока выполнения вызывающей функции посредством:
Ввод бесконечного цикла
Создание исключения
Вызов другого [[noreturn]] функция
Если функция указана как [[noreturn]] возвращает поток управления вызывающему абоненту, Polyspace ® помечает [[noreturn]] функция.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Объявление |
| Категория: Обязательно, Автоматизировано |