C ++ at_quick_exit () - C ++ standardna biblioteka

Funkcija at_quick_exit () u C ++ registrira funkciju koja se poziva na brzi završetak programa, tj. Prekida putem quick_exit ().

Funkcija registrirana s funkcijom at_quick_exit () poziva se kada se pozove funkcija quick_exit ().

prototip at_quick_exit ()

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

Ova je funkcija definirana u zaglavnoj datoteci.

at_quick_exit () Parametri

  • func: Pokazivač na funkciju koja se poziva pri brzom prekidu programa.

at_quick_exit () Povratna vrijednost

Funkcija at_quick_exit () vraća:

  • Nula ako je registracija funkcije uspješna.
  • Nije nula ako registracija funkcije nije uspjela.

Primjer 1: Kako funkcionira funkcija 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; )

Kada pokrenete program, izlaz će biti:

 Izlaz iz glavnog programa putem quick_exit ()

Može se registrirati više funkcija za izvršavanje pri brzom izlasku.

Ako je pomoću at_quick_exit () registrirano više funkcija, izvršavaju se obrnutim redoslijedom, tj. Funkcija koja je konačno registrirana izvršava se prvo. Ista se funkcija može registrirati više puta.

Broj poziva funkcija koje se mogu registrirati at_quick_exit () ovisi o određenoj implementaciji knjižnice. Međutim, minimalno ograničenje je 32.

Primjer 2: Registriranje višestrukih funkcija pomoću 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); )

Kada pokrenete program, izlaz će biti:

 Uspješna registracija Izlaz iz funkcije 3 Izlaz iz funkcije 2 Izlaz iz funkcije 1

Ako registrirana funkcija baci neobrađenu iznimku kad se pozove pri prekidu, poziva se funkcija terminate ().

Primjer 3: at_quick_exit () s funkcijom koja baca neobrađenu iznimku

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

Kada pokrenete program, izlaz će biti:

 Uspješna registracija generira iznimku (program će završiti s pogreškom)

Zanimljivi članci...