Namespaces
Variants

std:: at_quick_exit

From cppreference.net
Utilities library
Definido en el encabezado <cstdlib>
int at_quick_exit ( /*atexit-handler*/ * func ) noexcept ;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ;
(1) (desde C++11)
extern "C++" using /*atexit-handler*/ = void ( ) ;
extern "C" using /*c-atexit-handler*/ = void ( ) ;
(2) ( solo para exposición* )

Registra la función apuntada por func para ser llamada en la terminación rápida del programa (mediante std::quick_exit ).

Llamar a la función desde varios hilos no induce una condición de carrera. La implementación garantiza soportar el registro de al menos 32 funciones. El límite exacto está definido por la implementación.

Las funciones registradas no serán llamadas durante la terminación normal del programa . Si una función necesita ser llamada en ese caso, std::atexit debe ser utilizado.

Contenidos

Parámetros

func - puntero a una función que será llamada en la terminación rápida del programa

Valor de retorno

0 si el registro tiene éxito, valor distinto de cero en caso contrario.

Notas

Las dos sobrecargas son distintas porque los tipos del parámetro func son distintos (el language linkage es parte de su tipo).

Ejemplo

#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);
}

Salida:

pushed third
pushed second
pushed first

Véase también

provoca la terminación anormal del programa (sin limpieza)
(función)
provoca la terminación normal del programa con limpieza
(función)
registra una función para ser llamada durante la invocación de std::exit()
(función)
(C++11)
provoca la terminación rápida del programa sin limpieza completa
(función)
Documentación de C para at_quick_exit