C ++ atexit () - C ++ Standardbibliotek

Funktionen atexit () i C ++ registrerar en funktion som ska anropas vid normal programavslutning.

Funktionen atexit () i C ++ registrerar en funktion som ska anropas vid normal programavslutning.

atexit () prototyp

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

Denna funktion definieras i rubrikfilen.

atexit () Parametrar

  • funk: pekare till den funktion som ska anropas vid normal programavslutning.

atexit () Returvärde

Funktionen atexit () returnerar:

  • Noll om funktionsregistreringen lyckas.
  • Icke noll om funktionsregistreringen misslyckades.

Exempel 1: Hur fungerar atexit () -funktionen?

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

När du kör programmet blir resultatet:

 Registreringen lyckades Programmet avslutades

Mer än en funktion kan registreras för att utföra vid uppsägning.

Om mer än en atexit-funktion registreras, körs de i omvänd ordning, dvs den funktion som registreras atlast exekveras först. Samma funktion kan registreras mer än en gång.

Antalet funktionssamtal som kan registreras med atexit () beror på den specifika biblioteksimplementeringen. Minimigränsen är dock 32.

Exempel 2: Registrera flera funktioner med 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; )

När du kör programmet blir resultatet:

 Registrering lyckad Avslutningsfunktion 3 Avslutningsfunktion 2 Avslutningsfunktion 1

Om en registrerad funktion ger ett undantag som inte hanteras när den anropas vid avslutning kallas funktionen avsluta ().

Exempel 3: atexit () med funktionskastning obehandlat undantag

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

När du kör programmet blir resultatet:

 Registreringen lyckades genererar undantag

Intressanta artiklar...