Функција атекит () у језику Ц ++ региструје функцију која се позива при нормалном прекиду програма.
Функција атекит () у језику Ц ++ региструје функцију која се позива при нормалном прекиду програма.
атекит () прототип
екстерно инт атекит (воид (* фунц) (воид));
Ова функција је дефинисана у заглављу датотеке.
атекит () Параметри
- фунц: Показивач на функцију која се позива при нормалном прекиду програма.
атекит () Повратна вредност
Функција атекит () враћа:
- Нула ако је регистрација функције успешна.
- Није нула ако регистрација функције није успела.
Пример 1: Како функционише атекит () функција?
#include #include using namespace std; void bye() ( cout << "Program Exiting Successfully"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Када покренете програм, излаз ће бити:
Регистрација успешног изласка из програма успешно
Може се регистровати више функција за извршавање по престанку.
Ако је регистровано више од једне атекит функције, оне се извршавају обрнутим редоследом, тј. Функција регистрована атласт се извршава у почетку. Иста функција се може регистровати више пута.
Број позива функција које се могу регистровати помоћу атекит () зависи од конкретне имплементације библиотеке. Међутим, минимално ограничење је 32.
Пример 2: Регистровање вишеструких функција помоћу атекит ()
#include #include using namespace std; void exit1() ( cout << "Exit Function 1" << endl; ) void exit2() ( cout << "Exit Function 2" << endl; ) void exit3() ( cout << "Exit Function 3" << endl; ) int main() ( int x1, x2, x3; /* Executed at last*/ x1 = atexit(exit1); x2 = atexit(exit2); /* Executed at first */ x3 = atexit(exit3); if ((x1 != 0) or (x2 != 0) or (x3 != 0)) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Када покренете програм, излаз ће бити:
Успешна регистрација Излаз из функције 3 Излаз из функције 2 Излаз из функције 1
Ако регистрована функција баци необрађени изузетак када се позове приликом прекида, позива се функција терминате ().
Пример 3: атекит () са функцијом која баца необрађени изузетак
#include #include using namespace std; void bye() ( cout << "Generates Exception"; int a = 5, b = 0; int x = a/b; /* Program will terminate here */ cout << "Division by zero"; ) int main() ( int x; x = atexit(bye); if (x != 0) ( cout << "Registration Failed"; exit(1); ) cout << "Registration successful" << endl; return 0; )
Када покренете програм, излаз ће бити:
Успешна регистрација генерише изузетак