C ++ at_quick_exit () - C ++ standaardbibliotheek

De functie at_quick_exit () in C ++ registreert een functie die moet worden aangeroepen bij snelle beëindiging van het programma, dwz beëindigd via quick_exit ().

De functie die is geregistreerd met de functie at_quick_exit () wordt aangeroepen wanneer de functie quick_exit () wordt aangeroepen.

at_quick_exit () prototype

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

Deze functie is gedefinieerd in het header-bestand.

at_quick_exit () Parameters

  • func: Pointer naar de functie die moet worden aangeroepen bij het snel beëindigen van het programma.

at_quick_exit () Retourwaarde

De functie at_quick_exit () retourneert:

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

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

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

Wanneer u het programma uitvoert, is de uitvoer:

 Binnen het hoofdprogramma afsluiten via quick_exit ()

Er kan meer dan één functie worden geregistreerd om uit te voeren bij snel afsluiten.

Als meer dan één functie is geregistreerd met at_quick_exit (), worden ze in omgekeerde volgorde uitgevoerd, dwz de functie die als laatste is geregistreerd, wordt eerst uitgevoerd. Dezelfde functie kan meerdere keren worden geregistreerd.

Het aantal functieaanroepen dat kan worden geregistreerd met at_quick_exit () hangt af van de specifieke bibliotheekimplementatie. De minimumlimiet is echter 32.

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

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: at_quick_exit () 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; ) int main() ( int x; x = at_quick_exit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Wanneer u het programma uitvoert, is de uitvoer:

 Registratie succesvol genereert uitzondering (het programma wordt met een fout beëindigd)

Interessante artikelen...