#define _POSIX_C_SOURCE 200112L #include #include #include #include #include #include jmp_buf b; // globale pour être accessible dans h et main. void h(void) { printf("\t\t\tEntrée dans h()\n"); longjmp(b, 12345); printf("\t\t\tRetour de h()\n"); } void g(void) { printf("\t\tEntrée dans g()\n"); h(); printf("\t\tRetour de g()\n"); } void f(void) { printf("\tEntrée dans f()\n"); g(); printf("\tRetour de f()\n"); } int main(int argc, char **argv) { int x; printf("Entrée dans main()\n"); x = setjmp(b); printf("Valeur de x : %d\n", x); if (x == 0) // instruction setjmp exécutée directement. f(); else // instruction setjmp provenant du longjmp. printf("Retour de main()\n"); }