C ++ at_quick_exit () - C ++ standartinė biblioteka

C ++ funkcija at_quick_exit () registruoja funkciją, kurią reikia iškviesti greitai nutraukiant programą, ty ją nutraukiant per quick_exit ().

Funkcija, užregistruota naudojant funkciją at_quick_exit (), iškviečiama, kai iškviečiama funkcija quick_exit ().

at_quick_exit () prototipas

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

Ši funkcija apibrėžta antraštės faile.

at_quick_exit () parametrai

  • func: Funkcijos, kurią reikia iškviesti, greitas programos nutraukimas, žymeklis.

at_quick_exit () Grąžinimo vertė

Funkcija at_quick_exit () grąžina:

  • Nulis, jei funkcija sėkmingai užregistruota.
  • Nulis, jei nepavyko užregistruoti funkcijos.

1 pavyzdys: Kaip veikia at_quick_exit () funkcija?

 #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; )

Kai paleisite programą, išvestis bus:

 Pagrindinės programos viduje Išeinama per „quick_exit“ ()

Greitai išeinant galima užregistruoti daugiau nei vieną funkciją.

Jei naudojant at_quick_exit () yra užregistruota daugiau nei viena funkcija, jos vykdomos atvirkštine tvarka, ty iš pradžių vykdoma pagaliau užregistruota funkcija. Tą pačią funkciją galima užregistruoti daugiau nei vieną kartą.

Funkcijų iškvietimų, kurias galima užregistruoti at_quick_exit (), skaičius priklauso nuo konkretaus bibliotekos diegimo. Tačiau minimali riba yra 32.

2 pavyzdys: kelių funkcijų registravimas naudojant 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); )

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: at_quick_exit () 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; ) int main() ( int x; x = at_quick_exit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Kai paleisite programą, išvestis bus:

 Registracija sėkmingai sukuria išimtį (programa bus nutraukta per klaidą)

Įdomios straipsniai...