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?
Puoi usare setjmp/longjmp:
codice:
#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);
}
è un'esempio tirato a caso, per dare l'idea: non so neanche se funzioni