我有一个功能int rt_task_start (RT_TASK *task, void(*task_func)(void *arg), void *arg)
在第二个参数我在传递一个函数的参数。错误无效的表达式使用
- 当我只传递一个函数名称在那个时候没有问题(正如预期的那样)。
rt_task_start(&demo_task1, demo, 1);
- 但是当我通过
rt_task_start(&demo_task1, demo(&val), 1);
它给我错误error: invalid use of void expression
。变量val在之前定义。int val = 0;
- 当我打电话与此
rt_task_start(&demo_task1, demo(val), 1);
这显示错误Warning passing argument 1 of 'demo' makes pointer from integer without a cast
然后error: invalid use of void expression
。 int *val; *val = 0;
rt_task_start(&demo_task1, demo(&val), 1);
这也给我错误。
我不明白我应该通过什么,作为一个空指针。它给了我错误。任何想法请!
此功能的用意是什么?你想第二个参数是一个函数指针还是不同的数据类型?它不能同时存在。另外,'int * val; * val = 0;''可能会创建一个分段错误,因为您正在为未定义的地址位置分配一个值。 – lurker
@mbratch thanx指出我,我想第二个函数只有一个函数指针。其实我对第二个参数'void(* task_func)(void * arg)'它可以采用什么类型的参数感到困惑。尽管如此,我也可以发出争论,对于情况2,3,4而言,这些都是不正确的。 – Merom