使用C中的回调注册事件

时间:2014-03-31 17:20:19

标签: 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 ==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完成其运作后的意思?

1 个答案:

答案 0 :(得分:0)

正如您的代码所代表的那样,永远不会调用my_event_cb。它的地址传递给event_cb_register,但这对指针没有任何作用。

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