+ -
当前位置:首页 → 问答吧 → 实现一个纯C动态库,可以注册回调函数

实现一个纯C动态库,可以注册回调函数

时间:2011-12-13

来源:互联网

需求描述(因为不太懂,所以描述可能有误,希望大概能表述清楚):

平台:Linux
语言:C(C++也行吧)
方式:共享库

定义函数原型如下(可能有误):
void set_filter
(struct filter *flt, short xml_no, char * p_xml,void (*callback)(short, char *, void *), void *arg);

void get_xml(short xml_no,char * p_xml);

实现功能:
外部调用时可以在上面函数中注册回调函数,这个回调函数的原型:
void filter(short xml_no,char * p_xml);

共享库把p_xml传给回调函数,回调函数对p_xml字符串过滤后又把它交回给共享库,共享库再把它保存在本地缓存,通过get_xml函数供外部调用。

请给些意见,谢谢!

作者: nini7809   发布时间: 2011-12-13

库接口为void set_filter
(struct filter *flt, short xml_no, char * p_xml,void (*callback)(short, char *, void *), void *arg);
回调函数的原型就是void filter(short xml_no,char * p_xml, void *param);注意参数要一致。

当调用set_filter注册回调函数的时候,set_filter函数内部将callback函数指针记录下来,保存到一个全局的函数指针g_pb,其类型就是回调函数的类型,g_pb=callback; 

注册完成后,在你需要回调的地方执行g_pb(参数1,参数2,参数3);即可

作者: kongrenxin   发布时间: 2011-12-13

热门下载

更多