Namespaces
Variants

std::at_quick_exit

С сайта ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (основные типы, RTTI)
Макросы проверки возможностей библиотек (C++20)
Утилиты программы
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
 
Определён в заголовке <cstdlib>
int at_quick_exit( /*atexit-handler*/* func ) noexcept;
int at_quick_exit( /*c-atexit-handler*/* func ) noexcept;
(1) (начиная с C++11)
extern "C++" using /*atexit-handler*/ = void();
extern "C" using /*c-atexit-handler*/ = void();
(2) (только для демонстрации*)

Регистрирует функцию, на которую указывает func, для вызова при быстром завершении программы (через std::quick_exit).

Вызов функции из нескольких потоков не приводит к состоянию гонки. Гарантируется, что реализация поддерживает регистрацию как минимум 32 функций. Точное ограничение определяется реализацией.

Зарегистрированные функции не будут вызываться при нормальном завершении программы. Если функция должна быть вызвана в этом случае, необходимо использовать std::atexit.

Параметры

func - указатель на функцию, вызываемую при быстром завершении программы

Возвращаемое значение

​ 0 ​ если регистрация прошла успешно, в противном случае - ненулевое значение.

Примечания

Две перегрузки различаются, потому что типы параметра func различны ( языковая привязка является частью его типа).

Пример

#include <cstdlib>
#include <iostream>
void f1()
{
    std::cout << "pushed first" << std::endl; // flush is intentional
}
extern "C" void f2()
{
    std::cout << "pushed second\n";
}
int main()
{
    auto f3 = []
    {
        std::cout << "pushed third\n";
    };
    std::at_quick_exit(f1);
    std::at_quick_exit(f2);
    std::at_quick_exit(f3);
    std::quick_exit(0);
}

Вывод:

pushed third
pushed second
pushed first

Смотрите также

вызывает аварийное завершение программы (без очистки)
(функция)
вызывает нормальное завершение программы с очисткой
(функция)
регистрирует функцию для вызова при std::exit() вызове
(функция)
(C++11)
вызывает быстрое завершение программы без полной очистки
(функция)
Документация C для at_quick_exit