C ++ at_quick_exit () - Biblioteca C ++ padrão

A função at_quick_exit () em C ++ registra uma função a ser chamada no encerramento rápido do programa, ou seja, encerrada via quick_exit ().

A função registrada com a função at_quick_exit () é chamada quando a função quick_exit () é chamada.

protótipo at_quick_exit ()

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

Esta função é definida no arquivo de cabeçalho.

Parâmetros at_quick_exit ()

  • func: Ponteiro para a função a ser chamada no encerramento rápido do programa.

at_quick_exit () Valor de retorno

A função at_quick_exit () retorna:

  • Zero se o registro da função for bem-sucedido.
  • Diferente de zero se o registro da função falhou.

Exemplo 1: Como funciona a função 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; )

Quando você executa o programa, a saída será:

 Dentro do programa principal saindo via quick_exit ()

Mais de uma função pode ser registrada para execução na saída rápida.

Se mais de uma função for registrada usando at_quick_exit (), elas serão executadas na ordem reversa, ou seja, a função registrada por último é executada primeiro. A mesma função pode ser registrada mais de uma vez.

O número de chamadas de funções que podem ser registradas com at_quick_exit () depende da implementação da biblioteca particular. No entanto, o limite mínimo é 32.

Exemplo 2: registrando várias funções com 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); )

Quando você executa o programa, a saída será:

 Registro bem-sucedido Sair da Função 3 Sair da Função 2 Sair da Função 1

Se uma função registrada lançar uma exceção não tratada quando chamada no encerramento, a função terminate () será chamada.

Exemplo 3: at_quick_exit () com a função lançando uma exceção não tratada

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

Quando você executa o programa, a saída será:

 O registro bem-sucedido gera exceção (o programa será encerrado com erro)

Artigos interessantes...