c - 将函数作为参数传递不起作用

标签 c function pointers parameters

我想将一个函数作为参数传递给另一个函数。我已经在 Google 上搜索了这方面的信息,并且已经找到了解释,但它对我不起作用,我也不知道为什么。

我有以下代码:

void doSomething(uint64_t *);

这是我要传递的函数。

int functionToCall(int x, int y, void (*f)(uint64_t *));

这是我要调用并传递 doSomething() 函数的函数。

在我的代码中现在是:

uint64_t *state = malloc(sizeof(uint64_t) * 10);
void (*f)(uint64_t *) = doSomething;
functionToCall(2, 3, f(state));

如果我现在编译上面的代码,我总是得到:

error: invalid use of void expression

这有什么问题?

最佳答案

错误来自于您没有传递指向函数的指针而是函数的结果(无效)。

如果在你的函数 functionToCall 中你想用 state 变量调用 doSomething,那么你应该这样做:

void doSomething(uint64_t *);
int functionToCall(int x, int y, unint64_t * state, void (*f)(uint64_t *))
{
    f(state);

    /* ... */
}

uint64_t *state = malloc(sizeof(uint64_t) * 10);
void (*f)(uint64_t *) = doSomething;
functionToCall(2, 3, state, f);    

关于c - 将函数作为参数传递不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401315/

相关文章:

c - 如何区分以太网和其他以太网?

python - 哪个更基本 : Python functions or Python object-methods?

c - 为什么编译器内联函数不写在不同的源文件上?

c - 使用条件运算符时变量值如何变化?

c - 浮点值条件

c - 警告 : format ‘%d’ expects argument of type ‘int’ , 但参数 2 的类型为 ‘long int’ [-Wformat=]

Python:将列表传递给另一个列表但列表为空

C 二维数组在函数退出时更改值

c - 未设置的 C 指针不为空

c - 删除文件中的错误(C 编程)