C语言模块化
定义模块内部函数,设置回调函数。
/******************************* * client.h *******************************/ typedef struct socket_client socket_client; typedef void (*socket_client_cb_t) (socket_client *c, void *udata); void client_set_callback(socket_client *c, socket_client_cb_t *callback); /******************************* * client.c 或这在初始client时,初始回调函数。
* 主要作用: 如本模块为事务获得模块,那需要调用模块具体事件的分发处理时,调用设置的回调函数 *******************************/ struct socket_client { socket_client_cb_t callback;
void *userdata; };
socket_client *socket_client_new()
{
socket_client *c;
c = (socket_client *)malloc(sizeof(socket_client));
if(!c)
goto fail;
return c;
fail:
return NULL;
}
void client_set_callback(socket_client *c, socket_client_cb_t *callback, void *udata) { c->callback = callback;
c->userdata = udata; }
/* when client receive a message */
void client_call(socket_client *c)
{
c->callback(c, c->userdata);
}
参考:pulseaudio源码pulsecore/socket-client.c代码
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步