Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C Sprachbeschreibung

Home Die ANSI Bibliotheken stdarg.h signal.h

A.8 setjmp.h

Die Definitionen aus setjmp.h erlauben es, den normalen Ablauf eines Programms zu umgehen. Damit wird üblichereise im Fehlerfall direkt aus tief verschachtelten Funktionsaufrufen zurückgesprungen.

void longjmp(jmp_buf jmp_buffer, int return_value);
Mit dieser Funktion stellt man den Zustand wieder her, der mit setjmp gespeichert wurde. Die Programmausführung geht dann so weiter, als wurde setjmp mit dem Returnwert return_value, der ungleich 0 sein muß, beendet. Die Funktion, aus der setjmp aufgerufen wurde, darf noch nicht beendet sein! Globale Variablen haben wieder den Wert von vor dem Aufruf von setjmp, der Wert von automatischen Variablen aus der Funktion, die setjmp aufruft, ist undefiniert.
 
int setjmp(jmp_buf jmp_buffer);
Diese Funktion speichert den aktuellen Zustand in jmp_buffer ab, um ihn spaäter wieder anspringen zu können. Diese Funktion liefert in diesem Fall 0 zurück. Wenn mit longjmp zu dieser Stelle zurück gesprungen wird, befindet man sich nach diesem Aufruf, aber mit einem Returnwert ungleich 0.
 
#include <stdio.h>
#include <setjmp.h>

int i;

int main(void)
{
   jmp_buf TestEnv;

   i = 0;
   printf("i vor setjmp = %d\n", i);
   if (setjmp(TestEnv) == 0)
   {
      puts("direkter Aufruf");
          i = 4;
      printf("i vor longjmp = %d\n", i);
          longjmp(TestEnv, 1);
   }
   else
   {
      puts("hierher durch Aufruf von longjmp");
      printf("i nach setjmp = %d\n", i);
   }
   puts("Programmende");
}

Home Die ANSI Bibliotheken stdarg.h signal.h


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum