Sdílet prostřednictvím


setjmp

Uloží aktuální stav programu.

Syntaxe

int setjmp(
   jmp_buf env
);

Parametry

env
Proměnná, ve které je prostředí uloženo.

Vrácená hodnota

Vrátí hodnotu 0 po uložení prostředí zásobníku. Pokud setjmp se vrátí z důvodu longjmp volání, vrátí value argument , longjmpnebo pokud value je argument longjmp 0, setjmp vrátí hodnotu 1. Nevrátí se žádná chyba.

Poznámky

Funkce setjmp uloží prostředí zásobníku, které můžete následně obnovit pomocí longjmp. Při použití společně setjmp a longjmp poskytnout způsob, jak spustit non-local goto. Obvykle se používají k předání řízení provádění do zpracování chyb nebo kódu obnovení v dříve volané rutině bez použití normálních konvencí volání nebo návratu.

Volání pro setjmp uložení aktuálního prostředí zásobníku do env. Následné volání pro longjmp obnovení uloženého prostředí a vrácení ovládacího prvku do bodu těsně po odpovídajícím setjmp volání. Všechny proměnné (kromě proměnných registru) přístupné rutině přijímajícího ovládacího prvku obsahují hodnoty, které měly při longjmp volání.

Není možné použít setjmp přechod z nativního na spravovaný kód.

Specifické pro Microsoft

V kódu Jazyka C++ v systému Windows longjmp používá stejnou sémantiku stack-unwinding jako kód zpracování výjimek. Je bezpečné použít na stejných místech, kde je možné vytvořit výjimky jazyka C++. Toto použití ale není přenosné a přináší několik důležitých upozornění. Podrobnosti najdete v tématu longjmp.

END Microsoft Specific

Poznámka

V přenosném kódu C++ nemůžete předpokládat setjmp a longjmp podporovat sémantiku objektů jazyka C++. Konkrétně má setjmp/longjmp dvojice volání nedefinované chování, pokud nahradí setjmp a longjmp zavolá catchthrow všechny ne-triviální destruktory pro všechny automatické objekty. V programech C++ doporučujeme použít mechanismus zpracování výjimek jazyka C++.

Další informace naleznete v tématu Použití setjmp a longjmp.

Požadavky

Rutina Požadovaný hlavičkový soubor
setjmp <setjmp.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

Podívejte se na příklad pro _fpreset.

Viz také

Řízení procesů a prostředí
longjmp