C Sprachbeschreibung
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");
}
|
English version not yet available.
|
Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home -
Mail an den Webmaster -
Impressum