C 将函数作为参数传递不起作用
我想把一个函数作为参数传递给另一个函数。我已经在谷歌上搜索了这方面的信息,我已经找到了一个解释,但它对我不起作用,我也不知道为什么 我有以下代码:C 将函数作为参数传递不起作用,c,function,pointers,parameters,C,Function,Pointers,Parameters,我想把一个函数作为参数传递给另一个函数。我已经在谷歌上搜索了这方面的信息,我已经找到了一个解释,但它对我不起作用,我也不知道为什么 我有以下代码: void doSomething(uint64_t *); 这是我想通过的功能 int functionToCall(int x, int y, void (*f)(uint64_t *)); 这是我要调用并传递doSomething()函数的函数 在我的代码中,现在是: uint64_t *state = malloc(sizeof(uint6
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));
如果我现在编译上述代码,我总是得到:
错误:无效使用void表达式
有什么问题吗?我的C语言不是很好,但我想你可以从以前类似的帖子中得到一些帮助
希望我的回答有帮助我的C语言不是很好,但我想你可以从以前类似的帖子中得到一些帮助
希望我的回答有帮助我没有意识到我在
函数tocall
函数中传递了doSomething()
函数的参数
那么这个线路,
functionToCall(2, 3, f(state));
必须是,
functionToCall(2, 3, f);
我没有意识到我已将
function中的doSomething()
函数的参数传递给call
函数
那么这个线路,
functionToCall(2, 3, f(state));
必须是,
functionToCall(2, 3, f);
错误来自这样一个事实:您没有传递指向函数的指针,而是传递函数的结果(它是无效的) 如果在函数
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);
错误来自这样一个事实:您没有传递指向函数的指针,而是传递函数的结果(它是无效的) 如果在函数
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);
非常感谢。我也发现了这个问题。这很有帮助,但我还有一个错误。谢谢。我也发现了这个问题。这很有帮助,但我还有一个错误。是的,谢谢。这就是解决办法!是的,谢谢。这就是解决办法!