Namespaces
Variants

std:: at_quick_exit

From cppreference.net
Utilities library
Défini dans l'en-tête <cstdlib>
int at_quick_exit ( /*atexit-handler*/ * func ) noexcept ;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ;
(1) (depuis C++11)
extern "C++" using /*atexit-handler*/ = void ( ) ;
extern "C" using /*c-atexit-handler*/ = void ( ) ;
(2) ( exposition uniquement* )

Enregistre la fonction pointée par func pour être appelée lors de la terminaison rapide du programme (via std::quick_exit ).

L'appel de la fonction depuis plusieurs threads n'induit pas une course aux données. L'implémentation garantit la prise en charge de l'enregistrement d'au moins 32 fonctions. La limite exacte est définie par l'implémentation.

Les fonctions enregistrées ne seront pas appelées lors d'une terminaison normale du programme . Si une fonction doit être appelée dans ce cas, std::atexit doit être utilisé.

Table des matières

Paramètres

func - pointeur vers une fonction à appeler lors de la fin rapide du programme

Valeur de retour

0 si l'enregistrement réussit, valeur non nulle sinon.

Notes

Les deux surcharges sont distinctes car les types du paramètre func sont distincts (la linkage de langage fait partie de son type).

Exemple

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

Sortie :

pushed third
pushed second
pushed first

Voir aussi

provoque la fin anormale du programme (sans nettoyage)
(fonction)
provoque la fin normale du programme avec nettoyage
(fonction)
enregistre une fonction à appeler lors de l'invocation de std::exit()
(fonction)
(C++11)
provoque la fin rapide du programme sans nettoyage complet
(fonction)
Documentation C pour at_quick_exit