C ++ at_quick_exit () - standardní knihovna C ++

Funkce at_quick_exit () v C ++ registruje funkci, která má být vyvolána při rychlém ukončení programu, tj. Ukončena pomocí quick_exit ().

Funkce registrovaná u funkce at_quick_exit () se volá, když se volá funkce quick_exit ().

at_quick_exit () prototyp

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

Tato funkce je definována v hlavičkovém souboru.

at_quick_exit () Parametry

  • func: Ukazatel na funkci, která má být vyvolána při rychlém ukončení programu.

at_quick_exit () Vrátí hodnotu

Funkce at_quick_exit () vrací:

  • Nula, pokud je registrace funkce úspěšná.
  • Nenulové, pokud se registrace funkce nezdařila.

Příklad 1: Jak funguje funkce 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; )

Když spustíte program, výstup bude:

 Ukončení hlavního programu pomocí quick_exit ()

K rychlému ukončení lze zaregistrovat více než jednu funkci.

Pokud je pomocí at_quick_exit () zaregistrováno více než jedna funkce, jsou provedeny v opačném pořadí, tj. Funkce zaregistrovaná naposledy je provedena nejprve. Stejnou funkci lze zaregistrovat více než jednou.

Počet volání funkcí, které lze zaregistrovat pomocí at_quick_exit (), závisí na konkrétní implementaci knihovny. Minimální limit je však 32.

Příklad 2: Registrace více funkcí pomocí 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); )

Když spustíte program, výstup bude:

 Úspěšná registrace Ukončit funkci 3 Ukončit funkci 2 Ukončit funkci 1

Pokud registrovaná funkce vyvolá neošetřenou výjimku při volání při ukončení, je volána funkce terminate ().

Příklad 3: at_quick_exit () s funkcí vyvolávající neošetřenou výjimku

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

Když spustíte program, výstup bude:

 Úspěšná registrace generuje výjimku (program bude ukončen s chybou)

Zajímavé články...