_Noreturn function specifier (since C11) (deprecated in C23)
Указывает, что функция не возвращается в точку своего вызова.
Содержание |
Синтаксис
| _Noreturn объявление_функции | (начиная с C11) (устарело в C23) | ||||||||
Объяснение
Ключевое слово
_Noreturn
появляется в объявлении функции и указывает, что функция не возвращает управление путем выполнения оператора return или достижения конца тела функции (она может вернуть управление путем выполнения
longjmp
). Если функция, объявленная с
_Noreturn
, возвращает управление, поведение не определено. Рекомендуется вывод диагностического сообщения компилятором, если это может быть обнаружено.
Спецификатор
_Noreturn
может встречаться несколько раз в одном объявлении функции, поведение при этом такое же, как если бы он встречался один раз.
Этот спецификатор обычно используется через удобный макрос
noreturn
, который предоставляется в заголовочном файле
<stdnoreturn.h>
.
|
Макрос
|
(начиная с C23) |
Ключевые слова
Стандартная библиотека
Следующие функции являются
noreturn
в стандартной библиотеке:
не переводится (в данном случае весь контент состоит из названий функций C++)
- C++ специфические термины (имена функций) не подлежат переводу
- Форматирование полностью сохранено
Таким образом, перевод не требуется, так как вся текстовая информация состоит из неизменяемых элементов согласно вашим инструкциям.
Пример
#include <stdio.h> #include <stdlib.h> #include <stdnoreturn.h> // вызывает неопределенное поведение, если i <= 0 // завершает работу, если i > 0 noreturn void exit_now(int i) // or _Noreturn void exit_now(int i) { if (i > 0) exit(i); } int main(void) { puts("Preparing to exit..."); exit_now(2); puts("This code is never executed."); }
Вывод:
Preparing to exit...
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
-
- 6.7.4 Спецификаторы функций (стр.: TBD)
-
- 7.23 _Noreturn <stdnoreturn.h> (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 6.7.4 Спецификаторы функций (стр. 90-91)
-
- 7.23 _Noreturn <stdnoreturn.h> (стр. 263)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 6.7.4 Спецификаторы функций (стр: 125-127)
-
- 7.23 _Noreturn <stdnoreturn.h> (стр: 361)
Смотрите также
|
указывает, что функция не возвращает управление
(спецификатор атрибута) |
|
|
C++ documentation
для
[[noreturn]]
|
|