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

Funkcia atexit () v C ++ registruje funkciu, ktorá sa má volať pri normálnom ukončení programu.

Funkcia atexit () v C ++ registruje funkciu, ktorá sa má volať pri normálnom ukončení programu.

prototyp atexit ()

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

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

atexit () parametre

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

atexit () Vráti hodnotu

Funkcia atexit () vráti:

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

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

Po spustení programu bude výstup:

 Program bol úspešne ukončený

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

Ak je zaregistrovaných viac ako jedna funkcia atexit, sú vykonávané v opačnom poradí, tj. Funkcia registrovaná naposledy je vykonaná najskôr. Rovnakú funkciu je možné zaregistrovať viackrát.

Počet volaní funkcií, ktoré je možné zaregistrovať pomocou atexit (), 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 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; )

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: atexit () 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; /* 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; )

Po spustení programu bude výstup:

 Registrácia úspešná generuje výnimku

Zaujímavé články...