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