Compartilhar via


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.

Consulte também

Referência

Processo e controle de ambiente

setjmp