int scan(FILE *fp, int (*ontoken)(char *, int, void *), void *userdata) {
ontoken(s ,20 , userdata) ;
}int scan_proc(char *s, int len, void *udata)
{
int *p = udata ;
fwrite(s, 1, len, stdout) ;
fputc('\n', stdout);
*(int *)udata = 33 ;
return 0;
}void test()
{
int data ;
scan(fp,scan_proc, &data)
// data就是需要传出的用户数据
}
ontoken(s ,20 , userdata) ;
}int scan_proc(char *s, int len, void *udata)
{
int *p = udata ;
fwrite(s, 1, len, stdout) ;
fputc('\n', stdout);
*(int *)udata = 33 ;
return 0;
}void test()
{
int data ;
scan(fp,scan_proc, &data)
// data就是需要传出的用户数据
}
例如:
在一个dll 中 导出一个函数
定义
typedef void CALLBACK (*LPFun)(LPVOID lpData);
导出函数
// lpFun ---用户的回调函数, lpUserData - 回调函数的参数.
void TestFun(LPFun lpFun,LPVOID lpUserData);在你的程序调用这个dll 中的这个导出函数的时候,你应该把这个函数的指针,
和 一块内存传给 TestFun