C ++ at_quick_exit () - C ++ стандартна библиотека

Функцията at_quick_exit () в C ++ регистрира функция, която да бъде извикана при бързо прекратяване на програмата, т.е. прекратена чрез quick_exit ().

Функцията, регистрирана с функцията at_quick_exit (), се извиква, когато се извика функцията quick_exit ().

at_quick_exit () прототип

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

Тази функция е дефинирана в заглавния файл.

at_quick_exit () Параметри

  • func: Показалец към функцията, която трябва да бъде извикана при бързо прекратяване на програмата.

at_quick_exit () Върната стойност

Функцията at_quick_exit () връща:

  • Нула, ако регистрацията на функцията е успешна.
  • Не е нула, ако регистрацията на функцията е неуспешна.

Пример 1: Как работи функцията 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; )

Когато стартирате програмата, изходът ще бъде:

 Изход от основната програма чрез quick_exit ()

Повече от една функция могат да бъдат регистрирани за изпълнение при бърз изход.

Ако са регистрирани повече от една функция, използвайки at_quick_exit (), те се изпълняват в обратен ред, т.е. функцията, регистрирана накрая, се изпълнява първо. Една и съща функция може да бъде регистрирана повече от веднъж.

Броят на извикванията на функции, които могат да бъдат регистрирани с at_quick_exit (), зависи от конкретната реализация на библиотеката. Минималната граница обаче е 32.

Пример 2: Регистриране на множество функции с 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); )

Когато стартирате програмата, изходът ще бъде:

 Регистрация успешно Изходна функция 3 Изходна функция 2 Изходна функция 1

Ако регистрирана функция хвърля необработено изключение при извикване при прекратяване, се извиква функцията terminate ().

Пример 3: at_quick_exit () с функция, хвърляща необработено изключение

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

Когато стартирате програмата, изходът ще бъде:

 Регистрацията е успешна Генерира изключение (Програмата ще прекрати с грешка)

Интересни статии...