Sdílet prostřednictvím


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.

Viz také

Referenční dokumentace

Proces a řízení prostředí

setjmp