Compartilhar via


longjmp

Restaurações de localidade do ambiente e a execução da 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 telefonar.

Comentários

The longjmp função restaura uma localidade de ambiente e a execução de pilha salva anteriormente no env Por setjmp. setjmp e longjmp fornecem uma maneira de executar um não-locais goto; que normalmente são usadas para passar o controle de execução para código de tratamento de erros ou recuperação em uma rotina anteriormente chamado sem usar a telefonar normal e retornar convenções.

Uma telefonar para setjmp faz com que o ambiente de pilha corrente seja salvo no env. Uma telefonar subseqüente a longjmp Restaura o ambiente salvo e retorna o controle para o ponto imediatamente após o correspondente setjmp Chame. Currículos de execução sistema autônomo se valor apenas tinha sido devolvido a setjmp Chame. Os valores de todas as variáveis (exceto registrar variáveis) que são acessíveis para a rotina 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. If valor é passado sistema autônomo 0, o valor 1 é substituído no retorno real.

De telefonarlongjmp antes da função telefonar setjmp Retorna o; 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 registro permanecerá o mesmo.Os valores de registram variáveis na rotina chamada setjmp não podem ser restaurados para os valores adequados depois longjmp é executado.

  • Não use longjmp transferência 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 ele reinicializa pela primeira vez o pacote de ponto flutuante, chamando _fpreset.

    Observação:   Tenha 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 de C++.

Para obter mais informações, consulte Usando setjmp e longjmp.

Requisitos

Rotina

Cabeçalho necessário

longjmp

<setjmp.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Bibliotecas

Todas as versões do C em time de execução bibliotecas.

Exemplo

Consulte o exemplo para _fpreset.

Equivalente do NET Framework

Não aplicável. Para telefonar 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 ambiente de controle

setjmp