Puoi usare setjmp/longjmp:Originariamente inviato da metal_prog
Per quanto riguarda me volevo sapere come realizzare un sistema del genere dentro un semplice programma, dove questo blocca l'esecuzione di una funzione per eseguirne un'altra e poi riprendere l'esecuzione della prima... qualcuno mi sa aiutare?![]()
è un'esempio tirato a caso, per dare l'idea: non so neanche se funzionicodice:#include <stdio.h> #include <stdlib.h> #include <setjmp.h> void f1(int state); void f2(int state); jmp_buf label; int main(void){ int state = setjmp(label); if(state == 1) f1(state); else if(state == 2) f2(state); else if(state == 3) exit(0); f1(state); return 0; } void f1(int state){ printf("Funzione 1\n"); if(state == 0){ printf("called first time\n"); longjmp(label, 2); } printf("Funzione 1 esce\n"); longjmp(label, 3); } void f2(int state){ printf("Funzione 2\n"); if(state == 2){ printf("called first time\n"); longjmp(label, 1); } /*Non viene mai eseguito, penso ...*/ printf("Funzione 2 esce\n"); longjmp(label, 3); }![]()

Rispondi quotando