longjmp
Ambiente de pilha e restaurações localidade de execução.
void longjmp(
jmp_buf env,
int value
);
Parâmetros
env
Variável na qual o ambiente é armazenado.valor
Valor a ser retornado na chamada de setjmp .
Comentários
A função de longjmp restaurar uma localidade de ambiente e execução de pilha salva anteriormente em env por setjmp. setjmp e longjmp fornecem um modo de executar gotononlocal; normalmente são usados para transmitir o controle de execução para o código de tratamento de erro ou de recuperação em uma rotina anteriormente chamado sem usar as convenções normais de chamada e as de retorno.
Uma chamada para setjmp faz com que o ambiente atual da pilha a ser salvo em env. Uma chamada subsequente a longjmp restaura o controle ao ambiente e retorna o ponto imediatamente depois da chamada de setjmp correspondente. Resumos de execução como se tivesse sido o valor retornado apenas pela chamada de setjmp . Os valores de todas as variáveis (exceto variáveis do registro) que é acessível ao controle pull rotina contêm os valores que tinham longjmp quando foi chamado. Os valores de variáveis do registro serão imprevisíveis. O valor retornado por setjmp deve ser diferente de zero. Se o valor é passado como 0, o valor 1 será substituído no retorno real.
Chame longjmp antes da função que retorna setjmp chamado; se os resultados não são imprevisíveis.
Observe as seguintes limitações ao usar longjmp:
Não suponha que os valores de variáveis do registro permanecerá os mesmos. Os valores de variáveis do registro em setjmp chamando rotina não podem ser restaurados os valores apropriados após longjmp é executado.
Não use longjmp ao controle de transferência fora de uma rotina de manipulação 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 através de longjmp se reinicializa primeiro o pacote de matemática de ponto flutuante chamando _fpreset.
Note tenha cuidado ao usar setjmp e longjmp em programas C++. Como essas funções não oferecem suporte à semântica do objeto C++, é mais seguro usar o mecanismo de controle de exceções das linguagens C++.
Para obter mais informações, consulte Usando o setjmp e o longjmp.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
longjmp |
<setjmp.h> |
Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.
Bibliotecas
Todas as versões das Bibliotecas em tempo de execução C.
Exemplo
Consulte o exemplo de _fpreset.
Equivalência do .NET Framework
Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.