C ++ at_quick_exit () - Стандартная библиотека C ++

Функция at_quick_exit () в C ++ регистрирует функцию, которая будет вызываться при быстром завершении программы, т.е. завершение через quick_exit ().

Функция, зарегистрированная с помощью функции at_quick_exit (), вызывается при вызове функции quick_exit ().

at_quick_exit () прототип

 extern int at_quick_exit (void (* func) (void));

Эта функция определена в заголовочном файле.

at_quick_exit () Параметры

  • func: указатель на функцию, которая будет вызываться при быстром завершении программы.

at_quick_exit () Возвращаемое значение

Функция at_quick_exit () возвращает:

  • Обнулить, если регистрация функции прошла успешно.
  • Ненулевое значение, если регистрация функции завершилась неудачно.

Пример 1: Как работает функция at_quick_exit ()?

 #include #include using namespace std; void bye() ( cout << "Program Exiting via quick_exit()"; ) int main() ( at_quick_exit(bye); cout << "Inside Main" << endl; quick_exit(0); return 0; )

Когда вы запустите программу, вывод будет:

 Внутри основной программы Выход через quick_exit ()

Можно зарегистрировать более одной функции для выполнения при быстром выходе.

Если с помощью at_quick_exit () зарегистрировано более одной функции, они выполняются в обратном порядке, т.е. функция, зарегистрированная последней, выполняется первой. Одну и ту же функцию можно зарегистрировать более одного раза.

Число вызовов функций, которые можно зарегистрировать с помощью at_quick_exit (), зависит от конкретной реализации библиотеки. Однако минимальный лимит - 32.

Пример 2: Регистрация нескольких функций с помощью at_quick_exit ()

 #include #include using namespace std; void quick_exit1() ( cout << "Exit Function 1" << endl; ) void quick_exit2() ( cout << "Exit Function 2" << endl; ) void quick_exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = at_quick_exit(quick_exit1); x2 = at_quick_exit(quick_exit2); /* Executed at first */ x3 = at_quick_exit(quick_exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Когда вы запустите программу, вывод будет:

 Регистрация успешна Выход из функции 3 Выход из функции 2 Выход из функции 1

Если зарегистрированная функция выдает необработанное исключение при вызове при завершении, вызывается функция terminate ().

Пример 3: at_quick_exit () с функцией, генерирующей необработанное исключение

 #include #include using namespace std; void bye() ( cout << "Generates Exception"; int a = 5, b = 0; int x = a/b; ) int main() ( int x; x = at_quick_exit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; quick_exit(0); )

Когда вы запустите программу, вывод будет:

 Успешная регистрация генерирует исключение (программа завершится с ошибкой)

Интересные статьи...