Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中使用回调注册事件_C_Callback_Event Handling - Fatal编程技术网

在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

我想使用回调(即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\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