网址和网站的区别网页小游戏制作
web/
2025/9/25 11:41:19/
文章来源:
网址和网站的区别,网页小游戏制作,一个前端页面多少钱,西宁北京网站建设C语言——回调函数 宗旨#xff1a;技术的学习是有限的#xff0c;分享的精神是无限的。 如果参数是一个函数指针#xff0c;调用者可以传递一个函数的地址给实现者#xff0c;让实现者去调用它#xff0c;这就是回调函数。
void func(void (*f)(void*), void *p)
提供…C语言——回调函数 宗旨技术的学习是有限的分享的精神是无限的。 如果参数是一个函数指针调用者可以传递一个函数的地址给实现者让实现者去调用它这就是回调函数。
void func(void (*f)(void*), void *p)
提供一个回调函数再提供一个准备传给回调函数的参数把回调函数传给参数f把准备传给回调函数的参数按void *类型传给参数p。在适当的时候根据调用者传来的函数指针f调用回调函数即调用f(p)。 首先使用typedef定义回调函数类型 (*event_cb_t)(const struct event *evt, void *userdata); 上面的语句表示event_cb_t类型函数范围值类型为void类型。 定义并实现一个函数用于注册回调函数 event_cb_register(event_cb_t cb, void *userdata); 下面是注册回调函数my_event_cb的一个模板 static void my_event_cb(const struct event *evt, void *data)
{ /* do stuff and things with the event */
} ... event_cb_register(my_event_cb, my_custom_data);
... 在事件调度器event dispatcher中常常将回调函数放在结构体中 struct event_cb
{ event_cb_t cb; void *data;
}; 此时通过访问结构体成员变量调用回调函数 struct event_cb *callback; ... /* Get the event_cb that you want to execute */ callback-cb(event, callback-data); 一个回调函数的例子 #include stdio.h struct event_cb; typedef void (*event_cb_t)(const struct event_cb *evt, void *user_data); struct event_cb
{ event_cb_t cb; void *data;
}; static struct event_cb saved { 0, 0 }; void event_cb_register(event_cb_t cb, void *user_data)
{ saved.cb cb; saved.data user_data;
} static void my_event_cb(const struct event_cb *evt, void *data)
{ printf(in %s\n, __func__); printf(data1: %s\n, (const char *)data); printf(data2: %s\n, (const char *)evt-data);
} int main(void)
{ char my_custom_data[40] Hello!; event_cb_register(my_event_cb, my_custom_data); saved.cb(saved, saved.data); return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81594.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!