РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
601 of 815 menu

Функция atexit

Функция atexit регистрирует функцию, которая будет автоматически вызвана при нормальном завершении программы. В первый параметр мы передаем указатель на функцию без параметров и без возвращаемого значения, которая должна быть выполнена при выходе из программы. Функция возвращает 0 в случае успешной регистрации и ненулевое значение в случае ошибки. Зарегистрированные функции вызываются в порядке, обратном их регистрации.

Синтаксис

int atexit(void (*func)(void));

Пример

Давайте зарегистрируем одну функцию, которая выведет сообщение при завершении программы:

#include <iostream> #include <cstdlib> using namespace std; void goodbye() { cout << "Goodbye!" << endl; } int main() { atexit(goodbye); cout << "Program is running" << endl; return 0; }

Результат выполнения кода:

"Program is running" "Goodbye!"

Пример

Давайте зарегистрируем несколько функций и посмотрим, в каком порядке они будут вызваны:

#include <iostream> #include <cstdlib> using namespace std; void first() { cout << "First" << endl; } void second() { cout << "Second" << endl; } void third() { cout << "Third" << endl; } int main() { atexit(first); atexit(second); atexit(third); cout << "Main" << endl; return 0; }

Результат выполнения кода:

"Main" "Third" "Second" "First"

Пример

Давайте проверим результат регистрации функции с помощью atexit:

#include <iostream> #include <cstdlib> using namespace std; void cleanup() { cout << "Cleaning up" << endl; } int main() { int res = atexit(cleanup); if (res == 0) { cout << "Registration successful" << endl; } else { cout << "Registration failed" << endl; } return 0; }

Результат выполнения кода:

"Registration successful" "Cleaning up"

Смотрите также

  • функция exit,
    которая завершает программу
  • функция abort,
    которая аварийно завершает программу
  • функция terminate,
    которая вызывается при необработанном исключении
  • класс exception,
    который является базовым классом для исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить