2010-08-08 106 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

不應該以無效的方式使用void表達式,而只應該以有效的方式使用表達式?說真的,如果你沒有說錯誤在哪裏,或者給出了一些背景,那麼人們很難幫助你。 – 2010-08-08 04:32:01

+0

'handle()'是什麼?至少,請告訴我們*哪行代碼*導致錯誤。 – 2010-08-08 04:33:30

+0

這是第一行。看到我的答案。 – 2010-08-08 04:34:47

回答

2

問題是第一行。你必須傳遞一個函數指針,而它看起來像你正在調用的函數,這恰好有一個void返回類型。它也看起來像你想讓C有閉包 - 你試圖將參數傳遞給信號處理函數。這不可能。您需要將這些值存儲在全局變量中,併爲信號處理程序聲明正確的原型的信號處理程序。

相關問題