longjmp
Restaurações a localidade do ambiente e a execução de pilha.
void longjmp(
jmp_buf env,
int value
);
Parâmetros
env
Variável em que o ambiente está armazenado.Valor
Valor a ser retornado para setjmp de chamada.
Comentários
O longjmp função restaura um ambiente de pilha e a localidade de execução salvas anteriormente em env por setjmp.setjmpe longjmp fornecem uma maneira para executar um não-locais goto; eles são normalmente usados para passar o controle de execução para o código de tratamento de erros ou de recuperação em uma rotina anteriormente chamado sem usar a chamada normal e convenções de retornar.
Uma chamada para setjmp faz com que o ambiente de pilha atual seja salvo no env.Uma chamada subseqüente para longjmp restaura o ambiente salvo e devolve o controle para o ponto imediatamente após o correspondente setjmp de chamada.Reinicia a execução como se valor apenas tinha sido retornado pelo setjmp de chamada.Os valores de todas as variáveis (exceto registrar variáveis) que são acessíveis para a rotina de receber controle contêm os valores que tinham quando longjmp foi chamado.Os valores das variáveis de registro são imprevisíveis.O valor retornado por setjmp deve ser diferente de zero.Se valor é passado como 0, o valor 1 é substituído no retorno real.
Chame longjmp antes da função que chamou setjmp retorna; Caso contrário, os resultados serão imprevisíveis.
Observe as restrições a seguir ao usar longjmp:
Não assuma que os valores das variáveis de registro permanecerá o mesmo.Os valores das variáveis de registro à chamar a rotina setjmp não podem ser restaurados para os valores adequados após longjmp é executado.
Não use longjmp para transferir controle fora de uma rotina de tratamento de interrupção, a menos que a interrupção é causada por uma exceção de ponto flutuante.Nesse caso, um programa pode retornar de um manipulador de interrupção por meio de longjmp se primeiro reinicializa o pacote de matemática de ponto flutuante, chamando _fpreset.
Nota cuidado ao usar setjmp e longjmp nos programas do C++.Como essas funções não oferecem suporte a semântica de objeto C++, é mais seguro usar o mecanismo de tratamento de exceção do C++.
Para obter mais informações, consulte longjmp e setjmp usando.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
longjmp |
<setjmp.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Bibliotecas
Todas as versões da bibliotecas de tempo de execução c.
Exemplo
Consulte o exemplo para _fpreset.
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.