C ++ at_quick_exit () - C ++ Standardbibliotek

Funktionen at_quick_exit () i C ++ registrerer en funktion, der skal kaldes ved hurtig programafslutning, dvs. afsluttet via quick_exit ().

Funktionen registreret med at_quick_exit () -funktionen kaldes, når quick_exit () -funktionen kaldes.

at_quick_exit () prototype

 ekstern int at_quick_exit (ugyldig (* func) (ugyldig));

Denne funktion er defineret i headerfilen.

at_quick_exit () Parametre

  • funk: Markør til den funktion, der skal kaldes ved hurtig programafslutning.

at_quick_exit () Returværdi

Funktionen at_quick_exit () returnerer:

  • Nul, hvis funktionsregistreringen er vellykket.
  • Ikke nul, hvis funktionsregistreringen mislykkedes.

Eksempel 1: Hvordan fungerer funktionen 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ører programmet, vil output være:

 Inde i hovedprogrammet Afslutter via quick_exit ()

Mere end en funktion kan registreres til udførelse ved hurtig afslutning.

Hvis mere end en funktion er registreret ved at_quick_exit (), udføres de i omvendt rækkefølge, dvs. den funktion, der til sidst er registreret, udføres først. Den samme funktion kan registreres mere end én gang.

Antallet af funktionskald, der kan registreres med at_quick_exit (), afhænger af den specifikke biblioteksimplementering. Minimumsgrænsen er dog 32.

Eksempel 2: Registrering af flere 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ører programmet, vil output være:

 Registrering vellykket Afslutningsfunktion 3 Afslutningsfunktion 2 Afslutningsfunktion 1

Hvis en registreret funktion kaster en ikke-håndteret undtagelse, når den kaldes ved opsigelse, kaldes funktionen terminate ().

Eksempel 3: at_quick_exit () med undtagelse af funktion, der kaster uhåndteret

 #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ører programmet, vil output være:

 Registrering vellykket genererer undtagelse (Programmet afsluttes med fejl)

Interessante artikler...