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.