Функція atexit () в C ++ реєструє функцію, що викликається при звичайному завершенні програми.
Функція atexit () в C ++ реєструє функцію, що викликається при звичайному завершенні програми.
atexit () прототип
extern int atexit (void (* func) (void));
Ця функція визначена у файлі заголовка.
atexit () Параметри
- func: Вказівник на функцію, що викликається при звичайному завершенні програми.
atexit () Повернене значення
Функція atexit () повертає:
- Нуль, якщо реєстрація функції успішна.
- Не нульове значення, якщо реєстрація функції не вдалася.
Приклад 1: Як працює функція atexit ()?
#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; )
Коли ви запускаєте програму, результат буде:
Реєстрація успішної програми успішно завершена
Можна зареєструвати більше однієї функції для виконання при припиненні.
Якщо зареєстровано більше однієї функції atexit, вони виконуються в зворотному порядку, тобто спочатку виконується функція, зареєстрована в останньому. Цю саму функцію можна зареєструвати більше одного разу.
Кількість викликів функцій, які можна зареєструвати за допомогою atexit (), залежить від конкретної реалізації бібліотеки. Однак мінімальний ліміт - 32.
Приклад 2: Реєстрація множинної функції за допомогою 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; )
Коли ви запускаєте програму, результат буде:
Реєстрація успішна Функція виходу 3 Функція виходу 2 Функція виходу 1
Якщо зареєстрована функція видає необроблений виняток при виклику при завершенні, викликається функція terminate ().
Приклад 3: atexit () з функцією, що викидає необроблений виняток
#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; )
Коли ви запускаєте програму, результат буде:
Реєстрація успішна Генерує виняток