当前位置:首页 > > strongerHuang
[导读]其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:voidA(){...func();...}想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:voidfunc(){blablabla;}这很简单吧,现在...



其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:
void A() { ... func(); ...} 想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:
void func() { blablabla;} 这很简单吧,现在假设你编写的这段代码无比之牛逼,全世界的程序员都无比疯狂的想引入到自己的项目中,这时你会把A函数编写成一个库供全世界的码农使用。但此时所有人都发现一个问题,那就是他们都想在A函数中的某个特定点上执行一段自己的代码,作为这个库的创作者你可能会这样实现:
void A() { ... // 特定点 if (张三) { funcA(); } else if (李四) { funcB(); } ...} 假设全世界有一千万码农,那你是不是要有一千万个if else。。。想想这样的代码就很刺激有没有!更好的办法是什么呢?把函数也当做变量!你可以这样定义A函数:
void A(func f) { ... f(); ...} 任何一个码农在调用你的A函数时传入一个函数变量,A函数在合适的时机调用你传入的函数变量,从而节省了一千万行代码。为了让这个过程更加难懂一些,这个函数变量起了一个无比难懂的称呼:回调函数。现在你应该明白了回调函数是怎么一回事了吧,相比回调函数来说我更愿意将其看做函数变量。以上就是回调函数的基本原理,有想看更详细版本的请参考这里。以上仅仅是回调函数的一种用途,回调函数在基于事件驱动编程以及异步编程时更是必备的,关于事件驱动编程你可以参考这里,GUI编程的同学对此肯定很熟悉。希望这里的讲解对大家理解回调函数有所帮助。


------------ END ------------



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

裸机或RTOS项目里,最容易出现“驱动调业务”的硬耦合:UART中断里直接ParseModbus、按键扫描里直接ControlRelay、定时器回调里直接BlinkLED。换协议、换板卡就要改驱动源文件,维护成本陡增。用...

关键字: 回调函数 函数指针 驱动解耦

嵌入式系统开发中,模块间的强耦合是导致代码难以维护和扩展的首要原因。按键扫描模块检测到一次按键事件后,需要通知上层应用执行某个动作;协议解析器收到一帧数据后,需要根据协议类型调用不同的处理函数。如果这些关系在代码中写死—...

关键字: 回调函数 函数指针表

嵌入式系统开发,硬件驱动与业务逻辑的耦合问题长期困扰开发者。传统设计模式下,驱动层直接调用业务处理函数,导致代码难以维护且扩展性差。通过引入回调函数与函数指针表技术,结合状态机设计模式,可实现驱动与业务逻辑的完全解耦。本...

关键字: 回调函数 函数指针表

工业物联网设备的固件开发,团队遇到这样的困境:传感器驱动模块与业务逻辑紧密耦合,新增一种传感器类型需要修改核心处理代码。这种强依赖导致系统可维护性急剧下降,直到他们引入回调函数机制重构代码——通过函数指针实现模块间的&q...

关键字: 回调函数 事件驱动

什么是回调函数?`even.py`#回调函数1#生成一个2k形式的偶数defdouble(x):returnx*2#回调函数2#生成一个4k形式的偶数defquadruple(x):returnx*4`callback_...

关键字: 回调函数

其实回调函数和普通函数没有本质的区别。首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:voidA(){...func();...}想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:...

关键字: 回调函数

01什么是回调函数?回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A...

关键字: 回调函数

以前写过一篇关于回调函数的文章C语言函数指针之回调函数,今天又安排了一篇。

关键字: 回调函数 C语言

回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?

关键字: C语言 嵌入式 回调函数
关闭