我想将一个函数作为参数传递给另一个函数。我已经在 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/