Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zapisuje bieżący stan programu.
Składnia
int setjmp(
jmp_buf env
);
Parametry
env
Zmienna, w której jest przechowywane środowisko.
Wartość zwracana
Zwraca wartość 0 po zapisaniu środowiska stosu. Jeśli setjmp funkcja zwraca wartość z powodu longjmp wywołania, zwraca value argument , lub jeśli value argument argumentu longjmplongjmp wynosi 0, setjmp zwraca wartość 1. Nie ma zwracanego błędu.
Uwagi
Funkcja setjmp zapisuje środowisko stosu, które można następnie przywrócić przy użyciu polecenia longjmp. Gdy są używane razem, setjmp i longjmp zapewniają sposób na wykonanie pliku innego niż lokalny goto. Są one zwykle używane do przekazywania kontroli wykonywania do obsługi błędów lub kodu odzyskiwania w wcześniej wywoływanej procedurze bez używania normalnych konwencji wywoływania lub zwracania.
Wywołanie w celu setjmp zapisania bieżącego środowiska stosu w programie env. Kolejne wywołanie w celu longjmp przywrócenia zapisanego środowiska i zwraca kontrolę do punktu tuż po odpowiednim setjmp wywołaniu. Wszystkie zmienne (z wyjątkiem zmiennych rejestru) dostępne dla rutynowej kontrolki odbierania zawierają wartości, które miały podczas longjmp wywoływana.
Nie można użyć metody setjmp , aby przejść z kodu natywnego do zarządzanego.
Specyficzne dla firmy Microsoft
W kodzie języka Microsoft C++ w systemie Windows longjmp używa tej samej semantyki odwijania stosu co kod obsługi wyjątków. Można bezpiecznie używać w tych samych miejscach, w których można zgłaszać wyjątki języka C++. Jednak to użycie nie jest przenośne i wiąże się z pewnymi ważnymi zastrzeżeniami. Aby uzyskać szczegółowe informacje, zobacz longjmp.
END Microsoft Specific
Uwaga
W przenośnym kodzie C++ nie można zakładać setjmp i longjmp obsługiwać semantyki obiektów C++. W szczególności setjmp/longjmp para wywołań ma niezdefiniowane zachowanie, jeśli zastąpi element setjmp i longjmp catch przez i throw wywoła wszelkie nietrywialne destruktory dla jakichkolwiek obiektów automatycznych. W programach języka C++ zalecamy użycie mechanizmu obsługi wyjątków języka C++.
Aby uzyskać więcej informacji, zobacz Używanie setjmp i longjmp.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
setjmp |
<setjmp.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu _fpreset.