C ++ at_quick_exit () - Biblioteca estándar de C ++

La función at_quick_exit () en C ++ registra una función para ser llamada en la terminación rápida del programa, es decir, terminada vía quick_exit ().

La función registrada con la función at_quick_exit () se llama cuando se llama a la función quick_exit ().

at_quick_exit () prototipo

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

Esta función se define en el archivo de encabezado.

Parámetros de at_quick_exit ()

  • func: puntero a la función que se llamará al finalizar el programa rápidamente.

at_quick_exit () Valor de retorno

La función at_quick_exit () devuelve:

  • Cero si el registro de la función se realiza correctamente.
  • Distinto de cero si el registro de la función falló.

Ejemplo 1: ¿Cómo funciona la función 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; )

Cuando ejecute el programa, la salida será:

 Dentro del programa principal saliendo a través de quick_exit ()

Se puede registrar más de una función para ejecutarse en una salida rápida.

Si se registran más de una función usando at_quick_exit (), se ejecutan en el orden inverso, es decir, la función registrada al final se ejecuta al principio. La misma función se puede registrar más de una vez.

El número de llamadas a funciones que se pueden registrar con at_quick_exit () depende de la implementación de la biblioteca en particular. Sin embargo, el límite mínimo es 32.

Ejemplo 2: Registro de varias funciones con 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); )

Cuando ejecute el programa, la salida será:

 Registro exitoso Salir de la función 3 Salir de la función 2 Salir de la función 1

Si una función registrada lanza una excepción no controlada cuando se llama al finalizar, se llama a la función terminate ().

Ejemplo 3: at_quick_exit () con la función lanzando una excepción no controlada

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

Cuando ejecute el programa, la salida será:

 Registro exitoso genera una excepción (el programa terminará con un error)

Articulos interesantes...