gpt4 book ai didi

c - 错误无效使用 void 表达式

转载 作者:太空狗 更新时间:2023-10-29 17:03:14 26 4
gpt4 key购买 nike

我有一个函数 int rt_task_start (RT_TASK *task, void(*task_func)(void *arg), void *arg)在第二个参数中,我传递了一个带参数的函数。

  1. 当我当时只传递一个函数名时,没有问题。(正如预期的那样,它正在工作)。 rt_task_start(&demo_task1, demo, 1);
  2. 但是当我通过 rt_task_start(&demo_task1, demo(&val), 1); 时它给我错误 error: invalid use of void expression。之前定义了变量 val。 int val = 0;
  3. 当我调用此 rt_task_start(&demo_task1, demo(val), 1); 这显示错误 Warning passing argument 1 of 'demo' makes pointer from integer without a cast 然后 错误:void 表达式的使用无效
  4. int *val;
    *val = 0;
    rt_task_start(&demo_task1, demo(&val), 1); 这也给我错误。

我不明白我应该传递什么,作为一个空指针。它给我错误。请有任何想法!

最佳答案

void (*task_func)(void *arg);

上面的语句将 task_func 定义为一个指向函数的指针,该函数采用 void * 类型的指针并且不返回任何值。

因此,当您调用函数 rt_task_start 时,您应该传递一个指向函数的指针作为第二个参数。此外,您应该传递类型为 void * 的指针作为第三个参数,而不是整数。函数名的计算结果为指向该函数的指针,因此您可以简单地将函数名作为参数值传递,或者您可以在函数名前使用寻址运算符 &

int arg = 4;

// both calls are equivalent

rt_task_start(&demo_task1, demo, &arg);
rt_task_start(&demo_task1, &demo, &arg);

关于c - 错误无效使用 void 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com