C ++ at_quick_exit () - biblioteka standardowa C ++

Funkcja at_quick_exit () w C ++ rejestruje funkcję, która ma zostać wywołana przy szybkim zakończeniu programu, tj. Zakończona przez quick_exit ().

Funkcja zarejestrowana za pomocą funkcji at_quick_exit () jest wywoływana po wywołaniu funkcji quick_exit ().

at_quick_exit () prototyp

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

Ta funkcja jest zdefiniowana w pliku nagłówkowym.

at_quick_exit () Parametry

  • func: Wskaźnik do funkcji, która ma zostać wywołana w przypadku szybkiego zakończenia programu.

at_quick_exit () Wartość zwracana

Funkcja at_quick_exit () zwraca:

  • Zero, jeśli rejestracja funkcji zakończyła się pomyślnie.
  • Wartość różna od zera, jeśli rejestracja funkcji nie powiodła się.

Przykład 1: Jak działa funkcja at_quick_exit ()?

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

Po uruchomieniu programu wynik będzie następujący:

 Wewnątrz programu głównego Wyjście przez quick_exit ()

Można zarejestrować więcej niż jedną funkcję do wykonania przy szybkim wyjściu.

Jeśli za pomocą at_quick_exit () zarejestrowano więcej niż jedną funkcję, są one wykonywane w odwrotnej kolejności, tj. Funkcja zarejestrowana jako ostatnia jest wykonywana jako pierwsza. Tę samą funkcję można zarejestrować więcej niż raz.

Liczba wywołań funkcji, które można zarejestrować za pomocą at_quick_exit (), zależy od konkretnej implementacji biblioteki. Jednak minimalny limit to 32.

Przykład 2: Rejestrowanie wielu funkcji za pomocą 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); )

Po uruchomieniu programu wynik będzie następujący:

 Rejestracja zakończona sukcesem Wyjście z funkcji 3 Wyjście z funkcji 2 Wyjście z funkcji 1

Jeśli zarejestrowana funkcja zgłasza nieobsługiwany wyjątek podczas wywoływania po zakończeniu, wywoływana jest funkcja terminate ().

Przykład 3: at_quick_exit () z funkcją generującą nieobsługiwany wyjątek

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

Po uruchomieniu programu wynik będzie następujący:

 Rejestracja powiodła się generuje wyjątek (program zakończy się z błędem)

Interesujące artykuły...