Прототип функции atexit:
int atexit( void ( * funcptr ) (void) );
Заголовочный файл
Название | Язык |
---|---|
stdlib.h | С |
cstdlib | С++ |
Описание
Функция atexit
при завершении работы программы передает управление другой функции, которая будет выполняться на выходе.
Функция, на которую указывает аргумент *funcprt
вызывается, в случае успешного завершения программы.
Если функция atexit
была вызвана более одного раза, то порядок выполнения функций, передаваемых в качестве аргумента, будет обратным. Такой принцип работы функции основан на работе стека, т.е. последняя вызванная функция будет выполняться первой.
Одна единственная функция может быть зарегистрирована на выполнение более одного раза, после завершения работы программы.
Название
Реализация С++ должна поддерживать регистрацию по меньшей мере 32 atexit
функций.
Параметры:
- funcptr
Функция, которую необходимо вызвать, по завершении программы. Больше, функция не должна принимать никаких аргументов.
Возвращаемое значение
Нулевое значение возвращается, если функция была успешно зарегистрирована, или ненулевое значение, если не удалось её зарегистрировать.
Пример: исходный код программы
//пример использования функции atexit #include <iostream> #include <cstdio> #include <cstdlib> void funcExit1(void) { std::cout << "Выход функции 1n"; } void funcExit2(void) { std::cout << "Выход функции 2n"; } int main() { atexit(funcExit1); // при выходе из программы, запустить функцию funcexit1 atexit(funcExit2); // при выходе из программы, запустить функцию funcexit2 std::cout << "завершение main функцииn"; return 0; }
Пример работы программы
Выход функции 2
Выход функции 1