C ++ atexit () - C ++ standaardbibliotheek

De functie atexit () in C ++ registreert een functie die moet worden aangeroepen bij het normaal beëindigen van het programma.

De functie atexit () in C ++ registreert een functie die moet worden aangeroepen bij het normaal beëindigen van het programma.

atexit () prototype

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

Deze functie is gedefinieerd in het header-bestand.

atexit () Parameters

  • func: Pointer naar de functie die moet worden aangeroepen bij normale programmabeëindiging.

atexit () Retourwaarde

De functie atexit () retourneert:

  • Nul als de functieregistratie is gelukt.
  • Niet nul als de functieregistratie is mislukt.

Voorbeeld 1: Hoe werkt de atexit () -functie?

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

Wanneer u het programma uitvoert, is de uitvoer:

 Registratie succesvol Programma wordt succesvol afgesloten

Er kunnen meerdere functies worden geregistreerd die bij beëindiging moeten worden uitgevoerd.

Als er meer dan één atexit-functie is geregistreerd, worden deze in omgekeerde volgorde uitgevoerd, dwz de functie die is geregistreerd atlast wordt eerst uitgevoerd. Dezelfde functie kan meerdere keren worden geregistreerd.

Het aantal functie-aanroepen dat kan worden geregistreerd met atexit () hangt af van de specifieke bibliotheekimplementatie. De minimumlimiet is echter 32.

Voorbeeld 2: meerdere functies registreren met 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; )

Wanneer u het programma uitvoert, is de uitvoer:

 Registratie succesvol Afsluiten Functie 3 Afsluiten Functie 2 Afsluiten Functie 1

Als een geregistreerde functie een onverwerkte uitzondering genereert wanneer deze wordt aangeroepen bij beëindiging, wordt de functie terminate () aangeroepen.

Voorbeeld 3: atexit () waarbij de functie een onverwerkte uitzondering genereert

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

Wanneer u het programma uitvoert, is de uitvoer:

 Registratie succesvol genereert uitzondering

Interessante artikelen...