atexit
|
Определено в заголовочном файле
<stdlib.h>
|
||
|
int
atexit
(
void
(
*
func
)
(
void
)
)
;
|
||
Регистрирует функцию, на которую указывает
func
, для вызова при нормальном завершении программы (через
exit()
или возврат из
main()
). Функции будут вызываться в обратном порядке их регистрации, т.е. последняя зарегистрированная функция будет выполнена первой.
Одна и та же функция может быть зарегистрирована более одного раза.
Реализация гарантированно поддерживает регистрацию как минимум 32 функций. Точный предел определяется реализацией.
Содержание |
Параметры
| func | - | указатель на функцию, которая будет вызвана при нормальном завершении программы |
Возвращаемое значение
0 если регистрация прошла успешно, в противном случае - ненулевое значение.
Пример
#include <stdlib.h> #include <stdio.h> void f1(void) { puts("f1"); } void f2(void) { puts("f2"); } int main(void) { if ( ! atexit(f1) && ! atexit(f2) && ! atexit(f2) ) return EXIT_SUCCESS ; // atexit registration failed return EXIT_FAILURE ; } // <- if registration was successful calls f2, f2, f1
Вывод:
f2 f2 f1
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.22.4.2 Функция atexit (стр: 255)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.22.4.2 Функция atexit (стр: 350)
- Стандарт C99 (ISO/IEC 9899:1999):
-
- 7.20.4.2 Функция atexit (стр: 315)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
-
- 7.10.4.2 Функция atexit (стр: 156)
Смотрите также
|
(C11)
|
регистрирует функцию для вызова при
quick_exit
вызове
(функция) |
|
C++ documentation
для
atexit
|
|