C ++ atexit () - C ++ szabványos könyvtár

A C ++ atexit () függvénye regisztrál egy olyan funkciót, amelyet a program normál leállításakor kell meghívni.

A C ++ atexit () függvénye regisztrál egy olyan funkciót, amelyet a program normál leállításakor kell meghívni.

atexit () prototípus

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

Ezt a függvényt a fejlécfájl határozza meg.

atexit () Paraméterek

  • func: A program normál leállításakor hívandó funkció mutatója.

atexit () Visszatérési érték

Az atexit () függvény visszatér:

  • Nulla, ha a függvény regisztrációja sikeres.
  • Nem nulla, ha a függvény regisztrációja sikertelen volt.

1. példa: Hogyan működik az atexit () függvény?

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

A program futtatásakor a kimenet a következő lesz:

 A regisztráció sikeres A program sikeresen kilép

Több funkció is regisztrálható a felmondás végrehajtására.

Ha egynél több atexit függvényt regisztrálnak, akkor fordított sorrendben hajtják végre őket, vagyis először az atlastként regisztrált függvényt hajtják végre. Ugyanaz a funkció többször is regisztrálható.

Az atexit () szolgáltatással regisztrálható függvényhívások száma az adott könyvtár megvalósításától függ. A minimumhatár azonban 32.

2. példa: Több funkció regisztrálása atexit () segítségével

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

A program futtatásakor a kimenet a következő lesz:

 A regisztráció sikeres Kilépés a 3. funkcióból Kilépés a 2. funkcióból Kilépés az 1. funkcióból

Ha egy regisztrált függvény kezeletlen kivételt dob, amikor felhívják a felmondást, a terminate () függvény meghívásra kerül.

3. példa: atexit () függvénydobással kezeletlen kivétel

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

A program futtatásakor a kimenet a következő lesz:

 A regisztráció sikeres Kivételt generál

érdekes cikkek...