49 lines
2.4 KiB
C
49 lines
2.4 KiB
C
|
|
// stdnoreturn.h - Спецификатор невозвратных функций
|
|||
|
|
//
|
|||
|
|
// Этот заголовочный файл определяет макрос noreturn, который является
|
|||
|
|
// удобным синонимом ключевого слова _Noreturn из стандарта C11.
|
|||
|
|
//
|
|||
|
|
// Спецификатор noreturn сообщает компилятору, что функция никогда
|
|||
|
|
// не возвращает управление вызывающему коду. Это позволяет компилятору
|
|||
|
|
// выполнять дополнительные оптимизации и выдавать более точные
|
|||
|
|
// предупреждения о недостижимом коде.
|
|||
|
|
//
|
|||
|
|
// Типичные примеры невозвратных функций:
|
|||
|
|
// - exit() — завершение программы
|
|||
|
|
// - abort() — аварийное завершение
|
|||
|
|
// - _Exit() — немедленное завершение без очистки
|
|||
|
|
// - quick_exit() — быстрое завершение
|
|||
|
|
//
|
|||
|
|
// Поддерживается как стандартный идентификатор (noreturn),
|
|||
|
|
// так и русский синоним (безвозврат).
|
|||
|
|
|
|||
|
|
#ifndef _STDNORETURN_H_RU
|
|||
|
|
#define _STDNORETURN_H_RU
|
|||
|
|
|
|||
|
|
// ============================================================
|
|||
|
|
// Стандартный макрос C11
|
|||
|
|
// ============================================================
|
|||
|
|
|
|||
|
|
// Спецификатор невозвратной функции.
|
|||
|
|
// Применяется к объявлениям функций, которые не возвращают управление.
|
|||
|
|
//
|
|||
|
|
// Пример использования:
|
|||
|
|
// #include <stdnoreturn.h>
|
|||
|
|
// noreturn void завершить_программу(цел код) {
|
|||
|
|
// exit(код);
|
|||
|
|
// }
|
|||
|
|
#define noreturn _Noreturn
|
|||
|
|
|
|||
|
|
// ============================================================
|
|||
|
|
// Русский синоним для удобства
|
|||
|
|
// ============================================================
|
|||
|
|
|
|||
|
|
// Спецификатор невозвратной функции (русский синоним).
|
|||
|
|
//
|
|||
|
|
// Пример использования:
|
|||
|
|
// безвозврат пусто аварийный_выход(цел код) {
|
|||
|
|
// выход(код);
|
|||
|
|
// }
|
|||
|
|
#define безвозврат _Noreturn
|
|||
|
|
|
|||
|
|
#endif // _STDNORETURN_H_RU
|