在用 mongoose 源码开发的时候,这个初始化函数 mg_mgr_init()则是必须的,我们看下它到底做了哪些初始化操作。
void mg_mgr_init(struct mg_mgr *m, void *user_data) {
struct mg_mgr_init_opts opts;
memset(&opts, 0, sizeof(opts));
mg_mgr_init_opt(m, user_data, opts);
}
我们是这样调用的 mg_mgr_init(&mgr, nullptr); 所以 user_data 指针为 nullptr, 所以mg_mgr_init_opt() 里后两个参数是都是空的。

用户数据指针赋给了入参 m->user_data,接下来就是 interface 相关的赋值了,因为 m->ifaces 是二级指针,所以给它申请了内存:
这里用到了一个全局变量 mg_ifaces,它的定义是这样的
const struct mg_iface_vtable *mg_ifaces[] = {
&mg_default_iface_vtable,
};
而这个 mg_default_iface_vtable 就

最低0.47元/天 解锁文章
1019

被折叠的 条评论
为什么被折叠?



