Функция 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; )
Когда вы запустите программу, вывод будет:
Регистрация прошла успешно, генерируется исключение