|
Hauptseite - Welches System? - Hardware - Software - Emulatoren - |
Internet MausNet Programmieren Verweise Über |
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. Leider wird hierdurch der Programmablauf etwas durchbrochen. Bei einer guten Aufteilung eines Programms auf Module und Bibliotheken, die auch allgemeingültig verwendbar sind, sollten die Funktionen der Module sich geordnet beenden und einen entsprechenden Returnwert liefern.
Damit das Verhalten etwas deutlicher wird, folgt ein kleines Beispiel.
#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. |