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);    

非常感谢。我也发现了这个问题。这很有帮助,但我还有一个错误。谢谢。我也发现了这个问题。这很有帮助,但我还有一个错误。是的,谢谢。这就是解决办法!是的,谢谢。这就是解决办法!