Namespaces
Variants

std::at_quick_exit

Von de.cppreference.net
 
 
Hilfsmittelbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Hilfsmittel
Funktionen mit variabler Argumentanzahl
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Dreivektorvergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationsoperatoren (veraltet in C++20)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Tausch und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Definiert im 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 Veranschaulichung*)

Registriert die Funktion, auf die func zeigt, sodass sie bei schneller Programmbeendigung (über std::quick_exit) aufgerufen wird.

Der Aufruf der Funktion aus mehreren Threads führt zu keiner Datenkonkurrenz. Es wird garantiert, dass die Implementierung die Registrierung von mindestens 32 Funktionen unterstützt. Das genaue Limit ist implementationsdefiniert.

Die registrierten Funktionen werden bei normaler Programmbeendigung nicht aufgerufen. Wenn eine Funktion in diesem Fall aufgerufen werden muss, muss std::atexit verwendet werden.

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