C ++ atexit () - Bibliothèque standard C ++

La fonction atexit () en C ++ enregistre une fonction à appeler à la fin normale du programme.

La fonction atexit () en C ++ enregistre une fonction à appeler à la fin normale du programme.

prototype atexit ()

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

Cette fonction est définie dans le fichier d'en-tête.

Paramètres atexit ()

  • func: pointeur vers la fonction à appeler à la fin normale du programme.

atexit () Valeur de retour

La fonction atexit () renvoie:

  • Zéro si l'enregistrement de la fonction a réussi.
  • Non nul si l'enregistrement de la fonction a échoué.

Exemple 1: Comment fonctionne la fonction 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; )

Lorsque vous exécutez le programme, la sortie sera:

 Inscription réussie Sortie du programme réussie

Plus d'une fonction peut être enregistrée pour s'exécuter à la fin.

Si plusieurs fonctions atexit sont enregistrées, elles sont exécutées dans l'ordre inverse, c'est-à-dire que la fonction enregistrée atlast est exécutée en premier. La même fonction peut être enregistrée plusieurs fois.

Le nombre d'appels de fonctions qui peuvent être enregistrés avec atexit () dépend de l'implémentation particulière de la bibliothèque. Cependant, la limite minimale est de 32.

Exemple 2: enregistrement de plusieurs fonctions avec 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; )

Lorsque vous exécutez le programme, la sortie sera:

 Enregistrement réussi Quitter la fonction 3 Quitter la fonction 2 Quitter la fonction 1

Si une fonction enregistrée lève une exception non gérée lorsqu'elle est appelée à l'arrêt, la fonction terminate () est appelée.

Exemple 3: atexit () avec fonction lançant une exception non gérée

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

Lorsque vous exécutez le programme, la sortie sera:

 L'enregistrement réussi génère une exception

Articles intéressants...