C ++ atexit () - Libreria standard C ++

La funzione atexit () in C ++ registra una funzione da richiamare alla normale chiusura del programma.

La funzione atexit () in C ++ registra una funzione da richiamare alla normale chiusura del programma.

atexit () prototipo

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

Questa funzione è definita nel file di intestazione.

Parametri atexit ()

  • func: puntatore alla funzione da richiamare alla fine del programma normale.

atexit () Restituisce il valore

La funzione atexit () 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 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; )

Quando esegui il programma, l'output sarà:

 Registrazione riuscita Programma in uscita con successo

È possibile registrare più di una funzione da eseguire al termine.

Se sono registrate più funzioni atexit, queste vengono eseguite in ordine inverso, cioè la funzione registrata almeno 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 atexit () dipende dalla particolare implementazione della libreria. Tuttavia il limite minimo è 32.

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

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

Quando esegui il programma, l'output sarà:

 La registrazione è riuscita genera un'eccezione

Articoli interessanti...