Error Invalid use of void expression
c, xenomai
Solution
void (*task_func)(void *arg);
The above statement defines `task_func` to be a pointer to a function which takes a pointer of type `void *` and returns no value.
Therefore, when you call your function `rt_task_start`, you should pass a pointer to a function as the second argument. Also, you should pass a pointer of type `void *` as the third argument, not an integer. A function name evaluates to a pointer to the function, so you can simply pass the function name as the argument value, or you can use the address-of operator `&` before the function name.
int arg = 4;
// both calls are equivalent
rt_task_start(&demo_task1, demo, &arg);
rt_task_start(&demo_task1, &demo, &arg);
Problem
I have a function `int rt_task_start (RT_TASK *task, void(*task_func)(void *arg), void *arg)` where in second argument i am passing a function with argument. - When i only pass a function name at that time there is no problem.(as expected it's working). `rt_task_start(&demo_task1, demo, 1);` - But when i pass `rt_task_start(&demo_task1, demo(&val), 1);` it's giving me error `error: invalid use of void expression`. Variable val is defined before. `int val = 0;` - When i call with this `rt_task_start(&demo_task1, demo(val), 1);` this is showing error `Warning passing argument 1 of 'demo' makes pointer from integer without a cast` then `error: invalid use of void expression`. - `int *val; *val = 0;` `rt_task_start(&demo_task1, demo(&val), 1);` this is also giving me error. I can't understand what should i pass, as a void pointer. It's giving me error. Any Idea Please!