longjmp
Obnoví zásobník prostředí a provádění národního prostředí.
void longjmp(
jmp_buf env,
int value
);
Parametry
env
Proměnná, ve kterém je uložen prostředí.hodnota
Vrátí hodnotu setjmp volání.
Poznámky
longjmp Funkce obnoví zásobníku prostředí a provádění národního prostředí dříve uložené v env podle setjmp.setjmpa longjmp poskytují způsob spuštění místní goto; Tyto se obvykle používají k předání kód pro zpracování chyb nebo obnovení dříve nazývané rutiny spuštění ovládacího prvku bez použití normální volání a vrátit úmluv.
Volání setjmp bude uložen v aktuálním prostředí zásobníku env.Následující volání longjmp obnoví uložené prostředí a vrátí řízení do bodu bezprostředně následující odpovídající setjmp volání.Spuštění návratu jako hodnotu bylo právě byla vrácena setjmp volání.Hodnoty všechny proměnné (s výjimkou zaregistrovat proměnné), které jsou k dispozici rutinní přijímání ovládací obsahují hodnoty, by měly při zpracování longjmp byla volána.Hodnoty proměnných v registru nepředvídatelné.Hodnota vrácená setjmp musí být nenulová.Pokud hodnotu je předán jako 0, hodnota 1 nahrazuje v aktuální návrat.
Volání longjmp před funkce, která se nazývá setjmp vrátí; jinak nepředvídatelné výsledky.
Sledujte následující omezení při použití longjmp:
Neponecháte hodnoty proměnných rejstříku budou zůstávají stejné.Hodnoty proměnných v rejstříku v běžné volací setjmp nemusí být obnovena na správné hodnoty po longjmp provedení.
Nepoužívejte longjmp ovládací prvek mimo proceduru zpracování přerušení přenosu, pokud přerušení je způsobena čárce výjimku.V tomto případě může vrátit program z obsluha přerušení via longjmp nové pokud jeho první inicializaci balíček s plovoucí desetinnou čárkou math voláním _fpreset.
Poznámka: buďte při používání setjmp a longjmp v C++ programy.Protože tyto funkce nepodporují sémantiku jazyka C++ objektu, je bezpečnější používat mechanismus zpracování výjimek C++.
Další informace naleznete v tématu pomocí setjmp a longjmp.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
longjmp |
<setjmp.h> |
Další informace o kompatibilitě, viz Compatibility v úvodu.
Knihovny
Všechny verze C Runtime knihovny.
Příklad
Viz příklad pro _fpreset.
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.