在C中使用回调注册事件
我想使用回调(即C中的函数指针)注册事件在C中使用回调注册事件,c,callback,event-handling,C,Callback,Event Handling,我想使用回调(即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
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\u cb\u register
的参数1何时被调用
意味着只要调用了
事件cb\u寄存器
,或者在事件cb\u寄存器
完成其功能后?就您的代码而言,我的事件cb
永远不会被调用。它的地址被传递到event\u cb\u register
,但这与指针无关
my\u every\u cb
应将指针复制到类型为struct event\u cb
的变量中。稍后的代码可以在适当的时候使用该变量调用my\u event\u cb