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 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 longjmpcatch 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.

Zobacz też

Kontrola procesu i środowiska
longjmp