我有一個功能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