C ++ at_quick_exit () - C ++ Standardbibliotek

Funktionen at_quick_exit () i C ++ registrerar en funktion som ska anropas vid snabb programavslutning, dvs. avslutas via quick_exit ().

Funktionen registrerad med at_quick_exit () -funktionen anropas när quick_exit () -funktionen anropas.

at_quick_exit () prototyp

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

Denna funktion definieras i rubrikfilen.

at_quick_exit () Parametrar

  • funk: pekare till funktionen som ska anropas vid snabb programavslutning.

at_quick_exit () Returvärde

Funktionen at_quick_exit () returnerar:

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

Exempel 1: Hur fungerar 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; )

När du kör programmet blir resultatet:

 Inuti huvudprogrammet avslutas via quick_exit ()

Mer än en funktion kan registreras för att köras vid snabbutgång.

Om mer än en funktion registreras med at_quick_exit () körs de i omvänd ordning, dvs den funktion som äntligen är registrerad utförs först. Samma funktion kan registreras mer än en gång.

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

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

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: at_quick_exit () med undantag för funktionskastning

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

När du kör programmet blir resultatet:

 Registreringen lyckades genererar undantag (Programmet avslutas med fel)

Intressanta artiklar...