Funkcija atexit () v jeziku C ++ registrira funkcijo, ki jo je treba poklicati ob običajnem zaključku programa.
Funkcija atexit () v jeziku C ++ registrira funkcijo, ki jo je treba poklicati ob običajnem zaključku programa.
prototip atexit ()
zunanji int atexit (void (* func) (void));
Ta funkcija je definirana v datoteki glave.
parametri atexit ()
- func: Kazalec na funkcijo, ki bo poklicana ob običajnem zaključku programa.
atexit () Vrnjena vrednost
Funkcija atexit () vrne:
- Nič, če je registracija funkcije uspešna.
- Ni nič, če registracija funkcije ni uspela.
Primer 1: Kako deluje funkcija 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; )
Ko zaženete program, bo rezultat:
Registracija uspešen program uspešno zaključen
Registrira se lahko več funkcij za izvajanje ob prenehanju.
Če je registriranih več atexit funkcij, se te izvedejo v obratnem vrstnem redu, tj. Sprva se izvede funkcija, registrirana na zadnji. Isto funkcijo lahko registrirate več kot enkrat.
Število klicev funkcij, ki jih je mogoče registrirati z atexit (), je odvisno od posamezne izvedbe knjižnice. Vendar je minimalna omejitev 32.
Primer 2: Registracija več funkcij z 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; )
Ko zaženete program, bo rezultat:
Registracija uspešna Izhodna funkcija 3 Izhodna funkcija 2 Izhodna funkcija 1
Če registrirana funkcija vrže neobdelano izjemo, ko je poklicana ob zaključku, se pokliče funkcija terminate ().
Primer 3: atexit () s funkcijo, ki vrže neobdelano izjemo
#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; )
Ko zaženete program, bo rezultat:
Registracija uspešna Ustvari izjemo