gpt4 book ai didi

有人可以解释这是什么意思吗?无效(*func)();

转载 作者:行者123 更新时间:2023-12-02 09:48:47 29 4
gpt4 key购买 nike

我有一个结构体,其中有一个元素表示为 void (*func)(); 我知道 void 指针通常用于函数指针,但我似乎无法定义该函数。我不断收到取消引用指向不完整类型的指针。我用谷歌搜索了一下但没有结果。任何建议将不胜感激。

我正在尝试这样做:

struct callback * cb;
cb->func = *readUserInput;

ReadUserInput 定义为:

void readUserInput(void)
{
}

回调定义如下:

struct callback {
void (*func)();
int pcount;
enum attr_type type;
void *p[0];
};

最佳答案

您需要获取函数的地址,而不是尝试取消引用它。

改变

cb->func = *readUserInput;

cb->func = &readUserInput;

此外,您正在创建一个具有垃圾值的指针,然后取消引用它,从而导致未定义的行为。您需要以一种或另一种方式为其分配空间(malloc/free 或只是在堆栈上分配它):

struct callback cb; // put it on the stack
cb.func = &readUserInput;

struct callback * cb = malloc(sizeof(callback));
cb->func = &readUserInput;

...

free(cb);

关于有人可以解释这是什么意思吗?无效(*func)();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8352174/

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