C ++ atexit () - C ++ standardna knjižnica

Funkcija atexit () u C ++ registrira funkciju koja će se pozivati ​​pri normalnom završetku programa.

Funkcija atexit () u C ++ registrira funkciju koja će se pozivati ​​pri normalnom završetku programa.

atexit () prototip

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

Ova je funkcija definirana u zaglavnoj datoteci.

atexit () Parametri

  • func: Pokazivač na funkciju koja će se pozivati ​​pri normalnom prekidu programa.

atexit () Povratna vrijednost

Funkcija atexit () vraća:

  • Nula ako je registracija funkcije uspješna.
  • Nije nula ako registracija funkcije nije uspjela.

Primjer 1: Kako funkcionira atexit () funkcija?

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

Kada pokrenete program, izlaz će biti:

 Registracija uspješno završava program

Može se registrirati više funkcija za izvršavanje po prestanku.

Ako je registrirano više atexit funkcija, one se izvršavaju obrnutim redoslijedom, tj. Isprva se izvršava funkcija registrirana na zadnjem. Ista se funkcija može registrirati više puta.

Broj poziva funkcija koje se mogu registrirati s atexit () ovisi o određenoj implementaciji knjižnice. Međutim, minimalno ograničenje je 32.

Primjer 2: Registriranje višestruke funkcije s 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; )

Kada pokrenete program, izlaz će biti:

 Uspješna registracija Izlaz iz funkcije 3 Izlaz iz funkcije 2 Izlaz iz funkcije 1

Ako registrirana funkcija baci neobrađenu iznimku kad se pozove pri prekidu, poziva se funkcija terminate ().

Primjer 3: atexit () s funkcijom koja baca neobrađenu iznimku

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

Kada pokrenete program, izlaz će biti:

 Uspješna registracija generira iznimku

Zanimljivi članci...