c语言回调函数例子,看了就明白什么是回调函数了

c语言回调函数例子,看了就明白什么是回调函数了,第1张

回调函数 就是上层调用 设置下去

底层通过函数指针调用上层函数

多文件中才有用 单文件可以模拟

比如

#include <stdio.h>

typedef void (*pFuncCb) (int)//定义回调函数。

void callback1(int a)

{

    printf("callback function1 is called and parameter = %d\n", a)//打印1

}

void callback2(int a)

{

    printf("callback function2 is called and parameter = %d\n", a)//打印2

}

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)//没有打印。

    

    callback_function = callback2

    lowerFunc(100)// 会打印十次 打印2, 100到110

    

    return 0

}

typedef

struct

{

int

a

void

(*pshow)(int)

}TMP

void

func(TMP

*tmp)

{

if(tmp->a

>10)//如果a>10,则执行回调函数。

{

(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

"iostream.h"

#include

"windows.h"

typedef

void

(CALLBACK

*MyFun)(void)//回调函数定运洞散义

void

CALLBACK

callback()

//

回调函数

{

cout<<"****callback****\n"

}

void

Call_CallBack(MyFun

mycb)

{

cout<<"****Call_CallBack****\n"

mycb()

cout<<"__________________\n"

}

void

main()

{

Call_CallBack(callback)

}

//

其他人需要修改的话只要修改callback函数里的内容就行了,一般sdk封装后都会有回调,这样他人在调用sdk的时候就可以实现回调函数里的内颤悄容。

如果旁氏你需要理论的,网上搜回调函数,内容哈多随便看


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8277361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存