std::quick_exit
Материал из cppreference.com
Определено в заголовочном файле <cstdlib> | ||
[[noreturn]]void quick_exit(int exit_code ); | (начиная с C++11) | |
Приводит к быстрому завершению программы без полной очистки ресурсов.
Функции, переданные в std::at_quick_exit, вызываются в порядке, обратном их регистрации. Если исключение пытается распространиться за пределы любой из этих функций, вызывается std::terminate. После вызова зарегистрированных функций вызывается std::_Exit(exit_code).
Функции, переданные std::atexit, не вызываются.
Содержание |
[править]Параметры
exit_code | — | статус выхода из программы |
[править]Возвращаемое значение
(нет)
[править]Пример
Запустить этот код
#include <cstdlib>#include <iostream> template<int N>void quick_exit_handler(){std::cout<<"обработчик quick_exit #"<< N <<std::endl;// принудительный сброс} void at_exit_handler(){std::cout<<"обработчик at_exit\n";} int main(){if(std::at_quick_exit( quick_exit_handler<1>) or std::at_quick_exit( quick_exit_handler<2>)){std::cerr<<"Регистрация не удалась\n";returnEXIT_FAILURE;} std::atexit( at_exit_handler );// обработчик не будет вызван struct R { ~R(){std::cout<<"деструктор\n";}} resource; /*...*/ std::quick_exit(EXIT_SUCCESS); std::cout<<"Этот оператор недостижим...\n";}
Вывод:
обработчик quick_exit #2 обработчик quick_exit #1
[править]Смотрите также
вызывает аварийное завершение программы (без очистки) (функция) | |
вызывает нормальное завершение программы с очисткой (функция) | |
регистрирует функцию, которая будет вызываться при вызове std::exit() (функция) | |
(C++11) | регистрирует функцию, которая будет вызываться при вызове std::quick_exit (функция) |
Документация C по quick_exit |