gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:13 24 4
gpt4 key购买 nike

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

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