C ++ at_quick_exit () - štandardná knižnica C ++

Funkcia at_quick_exit () v C ++ registruje funkciu, ktorá má byť volaná pri rýchlom ukončení programu, tj ukončená pomocou quick_exit ().

Funkcia zaregistrovaná vo funkcii at_quick_exit () sa volá, keď sa volá funkcia quick_exit ().

at_quick_exit () prototyp

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

Táto funkcia je definovaná v hlavičkovom súbore.

at_quick_exit () parametre

  • func: Ukazovateľ na funkciu, ktorá sa má vyvolať pri rýchlom ukončení programu.

at_quick_exit () Vrátená hodnota

Funkcia at_quick_exit () vracia:

  • Nula, ak je registrácia funkcie úspešná.
  • Nenulové, ak registrácia funkcie zlyhala.

Príklad 1: Ako funguje funkcia 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; )

Po spustení programu bude výstup:

 Ukončenie hlavného programu prostredníctvom quick_exit ()

Na rýchle ukončenie je možné zaregistrovať viac ako jednu funkciu.

Ak je pomocou at_quick_exit () zaregistrovaných viac ako jedna funkcia, vykonajú sa v opačnom poradí, tj. Naposledy zaregistrovaná funkcia sa vykoná najskôr. Rovnakú funkciu je možné zaregistrovať viackrát.

Počet volaní funkcií, ktoré je možné zaregistrovať pomocou at_quick_exit (), závisí od konkrétnej implementácie knižnice. Minimálna hranica je však 32.

Príklad 2: Registrácia viacerých funkcií pomocou 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); )

Po spustení programu bude výstup:

 Úspešná registrácia Ukončiť funkciu 3 Ukončiť funkciu 2 Ukončiť funkciu 1

Ak registrovaná funkcia pri volaní na ukončenie vyvolá nespracovanú výnimku, zavolá sa funkcia terminate ().

Príklad 3: at_quick_exit () s funkciou vyvolávajúcou nespracovanú výnimku

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

Po spustení programu bude výstup:

 Úspešná registrácia generuje výnimku (program sa ukončí s chybou)

Zaujímavé články...