Namespaces
Variants

std:: at_quick_exit

From cppreference.net
Utilities library
Definiert in Header <cstdlib>
int at_quick_exit ( /*atexit-handler*/ * func ) noexcept ;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ;
(1) (seit C++11)
extern "C++" using /*atexit-handler*/ = void ( ) ;
extern "C" using /*c-atexit-handler*/ = void ( ) ;
(2) ( Nur zur Darstellung* )

Registriert die Funktion, auf die func zeigt, um sie beim schnellen Programmende (via std::quick_exit ) aufzurufen.

Das Aufrufen der Funktion aus mehreren Threads verursacht keinen Datenwettlauf. Die Implementierung garantiert die Unterstützung der Registrierung von mindestens 32 Funktionen. Das genaue Limit ist implementierungsdefiniert.

Die registrierten Funktionen werden nicht bei normalem Programmende aufgerufen. Falls eine Funktion in diesem Fall aufgerufen werden muss, std::atexit verwendet werden.

Inhaltsverzeichnis

Parameter

func - Zeiger auf eine Funktion, die beim schnellen Programmabbruch aufgerufen wird

Rückgabewert

0 wenn die Registrierung erfolgreich ist, andernfalls ein Wert ungleich Null.

Hinweise

Die beiden Überladungen sind unterschiedlich, weil die Typen des Parameters func unterschiedlich sind ( Sprachverknüpfung ist Teil seines Typs).

Beispiel

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

Ausgabe:

pushed third
pushed second
pushed first

Siehe auch

verursacht abnormale Programmbeendigung (ohne Bereinigung)
(Funktion)
verursacht normale Programmbeendigung mit Bereinigung
(Funktion)
registriert eine Funktion, die beim Aufruf von std::exit() aufgerufen werden soll
(Funktion)
(C++11)
verursacht schnelle Programmbeendigung ohne vollständige Bereinigung
(Funktion)
C-Dokumentation für at_quick_exit