C ++ atexit () - C ++ standardbibliotek

Funktionen atexit () i C ++ registrerer en funktion, der skal kaldes ved normal programafslutning.

Funktionen atexit () i C ++ registrerer en funktion, der skal kaldes ved normal programafslutning.

atexit () prototype

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

Denne funktion er defineret i headerfilen.

atexit () Parametre

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

atexit () Returværdi

Funktionen atexit () returnerer:

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

Eksempel 1: Hvordan fungerer atexit () -funktion?

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

 Registrering vellykket Program afsluttes med succes

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

Hvis mere end en atexit-funktion er registreret, udføres de i omvendt rækkefølge, dvs. den funktion, der er registreret atlast, udføres først. Den samme funktion kan registreres mere end én gang.

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

Eksempel 2: Registrering af flere 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ø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: atexit () med undtagelse fra funktion, der kaster uhåndteret

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

 Registrering vellykket genererer undtagelse

Interessante artikler...