gpt4 book ai didi

c - 使用 C 中的回调注册事件

转载 作者:行者123 更新时间:2023-11-30 17:36:12 25 4
gpt4 key购买 nike

我想使用回调注册事件,即 C 中的函数指针

typedef void (*event_cb_t)(const struct event *evt, void *userdata);

enum evt{
EVENT_WRITE=0
,EVENT_READ,
EVENT_CLOSE
};

struct event_cb {
event_cb_t cb;
void *data;
};

static void my_event_cb(int event, void *data)
{
if(event ==EVENT_CLOSE)
//some code
if (event == EVENT_READ)
// some code
}


int event_cb_register(event_cb_t cb, void *userdata){

printf("hi");
return 0;

}

int main()
{
struct event_cb *callback;

callback->data=NULL;
event_cb_register(my_event_cb, NULL);
return 0;
}

我想知道event_cb_register的参数1什么时候会被调用?

是指在 event_cb_register 被调用之后,还是在 event_cb_register 完成其功能之后?

最佳答案

就您的代码而言,永远不会调用 my_event_cb 。它的地址被传递给event_cb_register,但这对指针没有任何作用。

my_every_cb 应该将指针复制到 struct event_cb 类型的变量中。稍后的代码可以在适当的时候使用该变量调用 my_event_cb

关于c - 使用 C 中的回调注册事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768084/

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