setjmp
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 longjmp
longjmp
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
.