C ++ atexit () - C ++ Standardbibliothek

Die Funktion atexit () in C ++ registriert eine Funktion, die bei normaler Programmbeendigung aufgerufen werden soll.

Die Funktion atexit () in C ++ registriert eine Funktion, die bei normaler Programmbeendigung aufgerufen werden soll.

atexit () Prototyp

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

Diese Funktion ist in der Header-Datei definiert.

atexit () Parameter

  • func: Zeiger auf die Funktion, die bei normaler Programmbeendigung aufgerufen werden soll.

atexit () Rückgabewert

Die Funktion atexit () gibt Folgendes zurück:

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

Beispiel 1: Wie funktioniert die Funktion atexit ()?

 #include #include using namespace std; void bye() ( cout << "Program Exiting Successfully"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )

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

 Registrierung erfolgreich Programm erfolgreich beendet

Es können mehrere Funktionen registriert werden, die bei Beendigung ausgeführt werden sollen.

Wenn mehr als eine Atexit-Funktion registriert ist, 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 atexit () registriert werden können, hängt von der jeweiligen Bibliotheksimplementierung ab. Die Mindestgrenze beträgt jedoch 32.

Beispiel 2: Registrieren mehrerer Funktionen mit atexit ()

 #include #include using namespace std; void exit1() ( cout << "Exit Function 1" << endl; ) void exit2() ( cout << "Exit Function 2" << endl; ) void exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = atexit(exit1); x2 = atexit(exit2); /* Executed at first */ x3 = atexit(exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 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: atexit () 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; /* Program will terminate here */ cout << "Division by zero"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )

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

 Registrierung erfolgreich generiert Ausnahme

Interessante Beiträge...