2010-08-08 4 views
-2
turtle(int fd,int sec1,int turtle_speed){ 

    signal(SIGUSR1,handle(fd,turtle_speed)); 

    struct timeval b; 

    int flag=1,turtle_current_pos,turtle_previous_pos=0,sec2; 

    turtle_current_pos=0; 

    while(turtle_current_pos<100){ 

      sleep(2); 

       gettimeofday(&b,NULL); 

    sec2=b.tv_sec; 

    //printf("%d\n",sec2); 

    turtle_current_pos=(sec2-sec1)*turtle_speed; 
    fflush(stdout); 

    if((turtle_current_pos-turtle_previous_pos)>=1){ 
     turtle_previous_pos=turtle_current_pos; 
     print('T',turtle_previous_pos); 
    } 
    } 
} 
+1

Au lieu d'utiliser une expression vide de manière non valide, vous ne devez utiliser l'expression que de manière valide? Sérieusement, si vous ne dites pas où se situe l'erreur ou si vous donnez un peu de contexte, il est très difficile pour les gens de vous aider. –

+0

Qu'est-ce que 'handle()'? À tout le moins, indiquez-nous * quelle ligne de code * provoque l'erreur. –

+0

C'est la première ligne. Vois ma réponse. –

Répondre

2

Le problème est la première ligne. Vous devez passer un pointeur de fonction, alors qu'il semble que vous appeliez la fonction, qui se trouve avoir un type de retour void. Il semble aussi que vous vouliez que C ait des fermetures - vous essayez de passer des arguments à la fonction de gestionnaire de signal. Ce n'est pas possible. Vous devrez stocker ces valeurs dans des variables globales et déclarer votre gestionnaire de signal avec le prototype correct pour un gestionnaire de signal.

Questions connexes