看一下这个例子吧,我是这样理解的:
#include
"iostream.h"
"windows.h"
typedef
void
(CALLBACK
*MyFun)(void);//回调函数定义
CALLBACK
callback()
//
回调函数
{
cout"****callback****\n";
}
Call_CallBack(MyFun
mycb)
cout"****Call_CallBack****\n";
mycb();
cout"__________________\n";
main()
Call_CallBack(callback);
其他人需要修改的话只要修改callback函数里的内容就行了,一般sdk封装后都会有回调,这样他人在调用sdk的时候就可以实现回调函数里的内容.
如果你需要理论的,网上搜回调函数,内容哈多随便看
typedef struct
int a;
void (*pshow)(int);
}TMP;
void func(TMP *tmp)
if(tmp-a 10)//如果a10,则执行回调函数.
(tmp-pshow)(tmp-a);
void show(int a)
printf("a的值是%d\n",a);
void main()
TMP test;
test.a = 1;
test.pshow = show;
func(test);
这只是举例,一般回调函数的用法为:
甲方进行结构体的定义(成员中包括回调函数的指针)
乙方定义结构体变量,并向甲方注册,
甲方收集N个乙方的注册形成结构体链表,在某个特定时刻遍历链表,进行回调.
回调函数 就是上层调用 设置下去
底层通过函数指针调用上层函数
多文件中才有用 单文件可以模拟
比如
#include?stdio.h
typedef?void?(*pFuncCb)?(int);//定义回调函数.
void?callback1(int?a)
printf("callback?function1?is?called?and?parameter?=?%d\n",?a);//打印1
pFuncCb?callback_function;
void?lowerFunc(int?n)
int?i;
for(i?=?n;?i?n+10;?i?++)
if(callback_function)?callback_function(i);
int?main()
callback_function?=?callback1;
lowerFunc(1);//?会打印十次?打印1,?1到10
callback_function?=NULL;
lowerFunc(10);//没有打印.
return?0;
① 是的.
以上就是土嘎嘎小编为大家整理的c语言函数回调相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!