C ++: n atexit () -toiminto rekisteröi toiminnon, joka kutsutaan normaalille ohjelman lopettamiselle.
C ++: n atexit () -toiminto rekisteröi toiminnon, joka kutsutaan normaalille ohjelman lopettamiselle.
atexit () -prototyyppi
extern int atexit (void (* func) (void));
Tämä toiminto on määritelty otsikkotiedostossa.
atexit () -parametrit
- func: Osoitin toiminnolle, joka kutsutaan normaalin ohjelman lopettamisen yhteydessä.
atexit () Palautusarvo
Atexit () -funktio palauttaa:
- Nolla, jos toiminnon rekisteröinti onnistuu.
- Ei nolla, jos toiminnon rekisteröinti epäonnistui.
Esimerkki 1: Kuinka atexit () -toiminto toimii?
#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; )
Kun suoritat ohjelmaa, tulos on:
Rekisteröinti onnistui Ohjelma poistuu onnistuneesti
Useampi kuin yksi toiminto voidaan rekisteröidä suoritettavaksi purkamisen yhteydessä.
Jos useita atexit-funktioita on rekisteröity, ne suoritetaan päinvastaisessa järjestyksessä, ts. Ensin rekisteröidään atlast-funktio. Sama toiminto voidaan rekisteröidä useammin kuin kerran.
Atexit (): ssä rekisteröitävien toimintokutsujen määrä riippuu tietystä kirjastototeutuksesta. Vähimmäisraja on kuitenkin 32.
Esimerkki 2: Useiden toimintojen rekisteröinti atexit () -sovelluksella
#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; )
Kun suoritat ohjelmaa, tulos on:
Rekisteröinti onnistui Poistu toiminnosta 3 Poistu toiminnosta 2 Poistu toiminnosta 1
Jos rekisteröity toiminto heittää käsittelemättömän poikkeuksen lopetettaessa, lopetustoiminto () kutsutaan.
Esimerkki 3: atexit (), jossa toiminto heittää käsittelemättömän poikkeuksen
#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; )
Kun suoritat ohjelmaa, tulos on:
Rekisteröinti onnistui Luo poikkeuksen