Compartilhar via


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.

Consulte também

Referência

Processo e controle do ambiente

setjmp