Namespaces
Variants

std::at_quick_exit

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
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 seulement*)

Enregistre la fonction pointée par func pour qu'elle soit appelée lors d'une terminaison rapide du programme (via std::quick_exit).

L'appel de la fonction depuis plusieurs threads n'induit pas de 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é.

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