C ++ at_quick_exit () - C ++ Standardbibliothek

Die Funktion at_quick_exit () in C ++ registriert eine Funktion, die beim schnellen Programmabbruch aufgerufen werden soll, dh über quick_exit () beendet wird.

Die mit der Funktion at_quick_exit () registrierte Funktion wird aufgerufen, wenn die Funktion quick_exit () aufgerufen wird.

at_quick_exit () Prototyp

 extern int at_quick_exit (void (* func) (void));

Diese Funktion ist in der Header-Datei definiert.

at_quick_exit () Parameter

  • func: Zeiger auf die Funktion, die beim schnellen Beenden des Programms aufgerufen werden soll.

at_quick_exit () Rückgabewert

Die Funktion at_quick_exit () gibt Folgendes zurück:

  • Null, wenn die Funktionsregistrierung erfolgreich ist.
  • Nicht Null, wenn die Funktionsregistrierung fehlgeschlagen ist.

Beispiel 1: Wie funktioniert die Funktion at_quick_exit ()?

 #include #include using namespace std; void bye() ( cout << "Program Exiting via quick_exit()"; ) int main() ( at_quick_exit(bye); cout << "Inside Main" << endl; quick_exit(0); return 0; )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Innerhalb des Hauptprogramms Beenden über quick_exit ()

Es können mehrere Funktionen registriert werden, die beim schnellen Beenden ausgeführt werden.

Wenn mehr als eine Funktion mit at_quick_exit () registriert wird, werden sie in umgekehrter Reihenfolge ausgeführt, dh die zuletzt registrierte Funktion wird zuerst ausgeführt. Dieselbe Funktion kann mehrmals registriert werden.

Die Anzahl der Funktionsaufrufe, die bei at_quick_exit () registriert werden können, hängt von der jeweiligen Bibliotheksimplementierung ab. Die Mindestgrenze beträgt jedoch 32.

Beispiel 2: Registrieren mehrerer Funktionen mit at_quick_exit ()

 #include #include using namespace std; void quick_exit1() ( cout << "Exit Function 1" << endl; ) void quick_exit2() ( cout << "Exit Function 2" << endl; ) void quick_exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = at_quick_exit(quick_exit1); x2 = at_quick_exit(quick_exit2); /* Executed at first */ x3 = at_quick_exit(quick_exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Registrierung erfolgreich Exit-Funktion 3 Exit-Funktion 2 Exit-Funktion 1

Wenn eine registrierte Funktion beim Aufrufen eine nicht behandelte Ausnahme auslöst, wird die Funktion terminate () aufgerufen.

Beispiel 3: at_quick_exit () mit einer Funktion, die eine nicht behandelte Ausnahme auslöst

 #include #include using namespace std; void bye() ( cout << "Generates Exception"; int a = 5, b = 0; int x = a/b; ) int main() ( int x; x = at_quick_exit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:

 Registrierung erfolgreich generiert Ausnahme (Das Programm wird mit einem Fehler beendet)

Interessante Beiträge...