Udostępnij za pośrednictwem


longjmp

Przywraca stosu środowiska i wykonanie ustawień regionalnych.

void longjmp( 
   jmp_buf env, 
   int value  
);

Parametry

  • env
    Zmienna, w której przechowywany jest środowisko.

  • wartość
    Wartości zwracane do setjmp wywołania.

Uwagi

longjmp Funkcja przywraca środowiska stosu i realizacji regionalnych uprzednio zapisane w env przez setjmp.setjmpi longjmp umożliwiają wykonywanie nielokalne goto; one są zazwyczaj używane do przekazywania kontroli realizacji do kodu obsługi błędów lub odzyskiwania w uprzednio nazywany rutynowych bez korzystania z normalnej rozmowy i powrócić do Konwencji.

Wywołanie setjmp powoduje, że bieżące środowisko stosu do zapisania w env.Kolejne wywołania longjmp przywraca zapisane środowiska i zwraca sterowanie do punktu, niezwłocznie po odpowiednich setjmp wywołania.Wznawia wykonywanie tak, jakby wartość po prostu miał zostały zwrócone przez setjmp wywołania.Wartości wszystkich zmiennych (z wyjątkiem zarejestrować zmiennych), które są dostępne do rutynowych kontroli otrzymujących zawierają wartości, gdy mieli longjmp została wywołana.Wartości zmiennych rejestru są nieprzewidywalne.Wartość zwracana przez setjmp musi być różna od zera.Jeśli wartość jest przekazywana jako 0, wartość 1, jest podstawiany w rzeczywisty zwrot.

Wywołanie longjmp przed funkcję o nazwie setjmp zwraca; w przeciwnym razie wyniki są nieprzewidywalne.

Obserwować następujące ograniczenia podczas korzystania z longjmp:

  • Nie należy zakładać, że wartości zmiennych rejestru pozostaną takie same.Wartości zmiennych rejestru w rutynowych calling setjmp może nie zostać przywrócone do wartości prawidłowego po longjmp jest wykonywana.

  • Nie należy używać longjmp do przekazywania kontroli z procedury obsługi przerwań, chyba że przerwanie jest spowodowane zmiennoprzecinkowych wyjątek.W takim przypadku program może zwrócić z programu obsługi przerwania, via longjmp inicjuje od Jeśli go najpierw nowa pakiet math zmiennoprzecinkowych, wywołując _fpreset.

    Uwaga należy zachować ostrożność podczas korzystania z setjmp i longjmp w programach w języku C++.Ponieważ funkcje te nie obsługują semantykę obiektów C++, bezpieczniej jest używać mechanizmu obsługi wyjątków C++.

Aby uzyskać więcej informacji, zobacz Using setjmp i longjmp.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

longjmp

<setjmp.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

Zobacz przykład dla _fpreset.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Procedury kontroli środowiska

setjmp