Ц ++ ат_куицк_екит () - Ц ++ стандардна библиотека

Функција ат_куицк_екит () у Ц ++ региструје функцију која се позива на брзи завршетак програма, односно прекида путем куицк_екит ().

Функција регистрована функцијом ат_куицк_екит () позива се када се позове функција куицк_екит ().

прототип ат_куицк_екит ()

 ектерн инт ат_куицк_екит (воид (* фунц) (воид));

Ова функција је дефинисана у заглављу датотеке.

ат_куицк_екит () Параметри

  • фунц: Показивач на функцију која се позива при брзом прекиду програма.

ат_куицк_екит () Повратна вредност

Функција ат_куицк_екит () враћа:

  • Нула ако је регистрација функције успешна.
  • Није нула ако регистрација функције није успела.

Пример 1: Како функционише функција ат_куицк_екит ()?

 #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; )

Када покренете програм, излаз ће бити:

 Излаз из главног програма путем куицк_екит ()

Може се регистровати више функција за извршавање при брзом изласку.

Ако је помоћу ат_куицк_екит () регистровано више функција, извршавају се обрнутим редоследом, тј. Функција која је коначно регистрована извршава се прво. Иста функција се може регистровати више пута.

Број позива функција који се могу регистровати ат_куицк_екит () зависи од конкретне имплементације библиотеке. Међутим, минимално ограничење је 32.

Пример 2: Регистровање вишеструких функција помоћу ат_куицк_екит ()

 #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

Ако регистрована функција баци необрађени изузетак када се позове приликом прекида, позива се функција терминате ().

Пример 3: ат_куицк_екит () са функцијом која баца необрађени изузетак

 #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); )

Када покренете програм, излаз ће бити:

 Регистрација је успела Генерише изузетак (Програм ће се завршити грешком)

Занимљиви Чланци...