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