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

La fonction at_quick_exit () en C ++ enregistre une fonction à appeler à la fin rapide du programme, c'est-à-dire terminée via quick_exit ().

La fonction enregistrée avec la fonction at_quick_exit () est appelée lorsque la fonction quick_exit () est appelée.

prototype at_quick_exit ()

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

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

Paramètres at_quick_exit ()

  • func: pointeur vers la fonction à appeler lors de l'arrêt rapide du programme.

at_quick_exit () Valeur de retour

La fonction at_quick_exit () 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 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; )

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

 À l'intérieur du programme principal Quitter via quick_exit ()

Plusieurs fonctions peuvent être enregistrées pour s'exécuter lors d'une sortie rapide.

Si plusieurs fonctions sont enregistrées en utilisant at_quick_exit (), elles sont exécutées dans l'ordre inverse, c'est-à-dire que la fonction enregistrée en dernier 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 at_quick_exit () 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 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); )

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

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

 L'enregistrement réussi génère une exception (le programme se terminera avec une erreur)

Articles intéressants...