C ++ at_quick_exit () - C ++ Standardbibliotek

Funksjonen at_quick_exit () i C ++ registrerer en funksjon som skal kalles på hurtig programavslutning, dvs. avsluttet via quick_exit ().

Funksjonen registrert med at_quick_exit () -funksjonen kalles når quick_exit () -funksjonen kalles.

at_quick_exit () prototype

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

Denne funksjonen er definert i topptekstfilen.

at_quick_exit () Parametere

  • Func: pekeren til funksjonen som skal kalles ved rask programavslutning.

at_quick_exit () Returverdi

Funksjonen at_quick_exit () returnerer:

  • Null hvis registreringsregistreringen er vellykket.
  • Ikke null hvis funksjonsregistreringen mislyktes.

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

 Inne i hovedprogrammet Avslutter via quick_exit ()

Mer enn én funksjon kan registreres for å utføre ved rask avslutning.

Hvis mer enn én funksjon er registrert ved bruk av at_quick_exit (), blir de utført i omvendt rekkefølge, dvs. funksjonen som til slutt er registrert, blir først utført. Den samme funksjonen kan registreres mer enn en gang.

Antall funksjoner som kan registreres med at_quick_exit () avhenger av den spesifikke bibliotekimplementeringen. Minimumsgrensen er imidlertid 32.

Eksempel 2: Registrering av flere funksjoner 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 kjører programmet, vil utdataene være:

 Registrering vellykket Avslutningsfunksjon 3 Avslutningsfunksjon 2 Avsluttingsfunksjon 1

Hvis en registrert funksjon kaster et ubehandlet unntak når det kalles ved avslutning, kalles funksjonen terminate ().

Eksempel 3: at_quick_exit () med unntak for funksjonskasting

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

 Registreringen vellykket genererer unntak (Programmet avsluttes med feil)

Interessante artikler...