如何解决编译器错误:无效使用void表达式?

时间:2010-08-08 04:28:23

标签: c

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 个答案:

答案 0 :(得分:2)

问题是第一行。你必须传递一个函数指针,看起来你正在调用函数,它恰好有一个void返回类型。看起来你也希望C有闭包 - 你试图将参数传递给信号处理函数。这是不可能的。您需要将这些值存储在全局变量中,并使用正确的信号处理程序原型声明您的信号处理程序。