C ++ at_quick_exit () - Libreria standard C ++

La funzione at_quick_exit () in C ++ registra una funzione da chiamare alla terminazione rapida del programma, ovvero terminata tramite quick_exit ().

La funzione registrata con la funzione at_quick_exit () viene chiamata quando viene chiamata la funzione quick_exit ().

at_quick_exit () prototipo

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

Questa funzione è definita nel file di intestazione.

at_quick_exit () Parametri

  • func: puntatore alla funzione da richiamare alla chiusura rapida del programma.

at_quick_exit () Restituisce il valore

La funzione at_quick_exit () restituisce:

  • Zero se la registrazione della funzione ha esito positivo.
  • Diverso da zero se la registrazione della funzione non è riuscita.

Esempio 1: come funziona la funzione 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; )

Quando esegui il programma, l'output sarà:

 All'interno del programma principale Uscita tramite quick_exit ()

È possibile registrare più di una funzione da eseguire all'uscita rapida.

Se più di una funzione è registrata usando at_quick_exit (), vengono eseguite in ordine inverso, cioè la funzione registrata alla fine viene eseguita per prima. La stessa funzione può essere registrata più di una volta.

Il numero di chiamate di funzioni che possono essere registrate con at_quick_exit () dipende dalla particolare implementazione della libreria. Tuttavia il limite minimo è 32.

Esempio 2: registrazione di più funzioni con 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); )

Quando esegui il programma, l'output sarà:

 Registrazione riuscita Funzione di uscita 3 Funzione di uscita 2 Funzione di uscita 1

Se una funzione registrata genera un'eccezione non gestita quando viene chiamata al termine, viene chiamata la funzione terminate ().

Esempio 3: at_quick_exit () con la funzione che genera un'eccezione non gestita

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

Quando esegui il programma, l'output sarà:

 La registrazione ha avuto successo genera un'eccezione (il programma terminerà con un errore)

Articoli interessanti...