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

Коли ви запускаєте програму, результат буде:

 Реєстрація успішна Генерує виняток (програма завершиться з помилкою)

Цікаві статті...