我想使用回调来注册事件,即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
完成其运作后的意思?
答案 0 :(得分:0)
正如您的代码所代表的那样,永远不会调用my_event_cb
。它的地址传递给event_cb_register
,但这对指针没有任何作用。
my_every_cb
应该将指针复制到struct event_cb
类型的变量中。以后的代码可以在适当的时候使用该变量来调用my_event_cb
。