C ++ atexit () - Biblioteca standard C ++

Funcția atexit () din C ++ înregistrează o funcție care trebuie apelată la terminarea normală a programului.

Funcția atexit () din C ++ înregistrează o funcție care trebuie apelată la terminarea normală a programului.

prototip atexit ()

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

Această funcție este definită în fișierul antet.

atexit () Parametri

  • func: Pointer către funcția care trebuie apelată la terminarea normală a programului.

atexit () Valoare returnată

Funcția atexit () returnează:

  • Zero dacă înregistrarea funcției are succes.
  • Non zero dacă înregistrarea funcției a eșuat.

Exemplul 1: Cum funcționează funcția 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; )

Când rulați programul, ieșirea va fi:

 Înregistrare reușită Programul a ieșit cu succes

Mai multe funcții pot fi înregistrate pentru a fi executate la terminare.

Dacă sunt înregistrate mai multe funcții atexit, acestea sunt executate în ordine inversă, adică funcția înregistrată atlast este executată la început. Aceeași funcție poate fi înregistrată de mai multe ori.

Numărul de apeluri de funcții care pot fi înregistrate cu atexit () depinde de implementarea anumită bibliotecă. Cu toate acestea, limita minimă este de 32.

Exemplul 2: Înregistrarea funcției multiple cu 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; )

Când rulați programul, ieșirea va fi:

 Înregistrare reușită Funcția de ieșire 3 Funcția de ieșire 2 Funcția de ieșire 1

Dacă o funcție înregistrată aruncă o excepție care nu este gestionată atunci când este apelată la terminare, se apelează funcția terminate ().

Exemplul 3: atexit () cu funcție care aruncă o excepție nesolicitată

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

Când rulați programul, ieșirea va fi:

 Înregistrarea reușită generează excepție

Articole interesante...