C ++ funkcija atexit () registruoja funkciją, kurią reikia iškviesti įprastai nutraukus programą.
C ++ funkcija atexit () registruoja funkciją, kurią reikia iškviesti įprastai nutraukus programą.
atexit () prototipas
extern int atexit (negaliojantis (* func) (negaliojantis));
Ši funkcija apibrėžta antraštės faile.
atexit () parametrai
- func: Funkcijos, kurią reikia iškviesti įprastu programos nutraukimu, žymeklis.
atexit () Grąžinimo vertė
Funkcija atexit () grąžina:
- Nulis, jei funkcija sėkmingai užregistruota.
- Nulis, jei nepavyko užregistruoti funkcijos.
1 pavyzdys: Kaip veikia atexit () funkcija?
#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; )
Kai paleisite programą, išvestis bus:
Registracija sėkminga Programa sėkmingai baigta
Užregistravus galima užregistruoti daugiau nei vieną funkciją.
Jei yra užregistruota daugiau nei viena atexit funkcija, jos vykdomos atvirkštine tvarka, ty iš pradžių vykdoma atlast registruota funkcija. Tą pačią funkciją galima užregistruoti daugiau nei vieną kartą.
Funkcijų iškvietimų, kurias galima užregistruoti naudojant „atexit“ (), skaičius priklauso nuo konkretaus bibliotekos įgyvendinimo. Tačiau minimali riba yra 32.
2 pavyzdys: kelių funkcijų registravimas naudojant „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; )
Kai paleisite programą, išvestis bus:
Registracija sėkminga Išeiti iš 3 funkcijos Išeiti iš 2 funkcijos Išeiti iš 1 funkcijos
Jei užregistruota funkcija iškviečia neapdorotą išimtį, kai iškviečiama nutraukimo funkcija, iškviečiama funkcija terminate ().
3 pavyzdys: atexit () su funkcija išmeta neapdorotą išimtį
#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; )
Kai paleisite programą, išvestis bus:
Registracija sėkmingai sukuria išimtį