Freigeben über


longjmp

Stellt Stapel Gebietsschema und Ausführen Umgebungen wieder her.

void longjmp(
   jmp_buf env,
   int value 
);

Parameter

  • env
    Die Variable, in der Umgebung gespeichert wird.

  • Wert
    So rufen Sie setjmp-Wert, der zurückgegeben werden soll.

Hinweise

Die longjmp-Funktion stellt einen Stapel umgebungs- Gebietsschema und - ausführungs wieder her, das zuvor im env von setjmpgespeichert wird.setjmp und longjmp bieten eine Möglichkeit, nicht lokale gotoauszuführen. Diese werden i. d. R. verwendet, um die Fehlerbehandlung in Execution Control oder Wiederherstellen von Code in einer zuvor aufgerufene Routine übergeben, ohne die normalen Aufrufs- zurückgeben und konventionen zu verwenden.

Ein Aufruf von setjmp wird die aktuelle Stapel Umgebungen, in envgespeichert werden soll.Ein nachfolgender Aufruf von longjmp stellt die gespeicherte Umgebung wiederhergestellt und gibt die Steuerung unmittelbar nach dem Punkt im entsprechenden setjmp Aufruf zurück.Die Ausführung wird fortgesetzt, als wäre Wert nur durch den setjmp Aufruf zurückgegeben worden wäre.Die Werte aller Variablen) - variablen Register (außer dem empfangenden RoutineSteuerelement zugänglich sind, enthalten die Werte, die sie hatten, als longjmp aufgerufen wurde.Die Werte von Variablen Register sind unvorhersehbar.Der Wert, der von setjmp zurückgegeben wird, darf nicht 0 sein.Beim Wert als 0 übergeben wird, wird der Wert 1 in der eigentlichen Wagenrücklauf ersetzt.

Rufen Sie longjmp vor der Funktion auf, die setjmp gibt aufgerufen hat. andernfalls sind die Ergebnisse unvorhersehbar.

Beachten Sie die folgenden Einschränkungen, wenn longjmpverwendet werden:

  • Gehen Sie nicht davon aus, dass die Werte der Variablen Register gleich bleiben.Die Werte von Variablen in Aufrufen von setjmp Register nicht den richtigen Werten wiederhergestellt werden kann, nachdem longjmp ausgeführt wurde.

  • Verwenden Sie longjmp nicht der Steuerung aus einer Unterbrechung Behandlung der Routine, es sei denn, die Unterbrechung durch eine Gleitkommaausnahme verursacht wurde.In diesem Fall wird ein Programm möglicherweise von einem Unterbrechungssteuerungsprogramm über longjmp zurück, wenn es zuerst das Float mathematische Paket initialisiert, indem _fpresetaufruft.

    Hinweis gibt acht, wenn es setjmp und longjmp in C++-Programmen verwendet.Da diese Funktionen Semantik C++-Objekt nicht unterstützen, ist es sicherer, den Mechanismus zur C++-Ausnahmebehandlungs zu verwenden.

Weitere Informationen finden Sie unter Verwenden von setjmp und longjmp.

Anforderungen

Routine

Erforderlicher Header

longjmp

<setjmp.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Bibliotheken

Alle Versionen Cs.

Beispiel

Weitere Informationen finden Sie im Beispiel für _fpreset.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Prozess- und Umgebungssteuerelement

setjmp