钩子函数和回调函数(回调函数和钩子函数)
首发

钩子函数和回调函数(回调函数和钩子函数)

优质
请用语音读文章

前言本文主要介绍的是C语言回调函数与钩子函数的概念。如果你想要从事C/C++ 行业。对于回调函数与钩子函数肯定会接触的。很多封装的API中都存在这样的函数设计。希望对于超多访客学习C/C++有一些小小的帮助。

概念理解什么是回调函数?什么又是钩子函数?目前对于这两个概念的定义可能难以理解。在编程的过程中也是有点难区别。因为他们本质上都是属于函数。只是说是函数的一种应用的形式不同罢了。

不管是钩子函数还是回调函数为了保持程序的灵活性。大部分都会选用函数指针的方式进行设计。所以一般小伙伴都直接认为是函数指针的一种应用。如果从语法的角度来看。确实是这么回事。可是咱们需要换一个角度去看待一个事物。就像咱们之前谈面向对象编程。如果你用面向过程的思维方式去理解面向对象的设计是难以理解的。所以这里的两个概念也是一样的。

回调函数 应该很多小伙伴在编程中或者浏览别人的代码的时候都会看到callback的字样。是的。回调函数的英文就是callback Fuction。从字面上来理解 : 反过来调用的函数。那咱们就需要知道它本来要去哪里。它又返回到什么地方执行。请看以下案例:

其实从形式上看来确实没有什么特其他就是函数指针的应用。不过咱们换一个角度。用分层的设计角度再对回调函数进行理解。把Cal函数认为是底层函数(也完全可以说是库函数)。把main看成是上层应用函数。而add和sub认为是上层的方法。现在main要让底层Cal去进行计算了。而咱们的Cal函数再执行过程中发现不知道用什么方法进行计算。于是他又打道回府去拿到计算的方法。然后获得最后的结果返回给main。那么这里的Sub和Add都认为是回调函数。

钩子函数 一看到钩子(Hook)我们第一个步想到的动作就是挂钩。作者这里举个例子:今天要吃鱼。去河边钓鱼。于是咱们准备好钓鱼竿。终于有鱼上钩了。一看原来是条小鱼。于是便放了。继续钓鱼。接着钓了条大鱼。于是收工回去吃大餐。

所以钩子函数看来就相当于一个监测器。在消息传递的过程中。捕获自己感兴趣的内容。然后去处理。钩子函数这个概念在消息机制中经常会提到的。它也是一个函数。一般是通过函数指针进行灵活的注册。这样一说。完了。分不清楚了。首先咱们还是要选择好角度。不确定角度真的说不清。

各位可能会看到钩子函数也是客户定义的。是不是也完全可以理解为一个回调函数呢?形式上确实可以认为钩子函数也是一种回调函数。不过这样没有什么意义。我还可以说他们都是函数呢?还是要从函数的功能上区分。回调函数更多的是目的处理。而钩子函数更多的是过程监控。对于钩子函数的应用在rt-thread或者FreeRtos中都使用得非常多。

RT-Thread中截取的钩子函数代码参考:

RT-Thread通过一个宏定义来让客户决定是否开启钩子函数功能。上面每次进入中断都会调用对应的钩子函数。具体钩子函数根据自身要求进行设计。比如统计或者监控等等功能。

尾言文章都是手打原创。每天最浅显的介绍C语言、C++。windows知识。喜欢我的文章就关注一波吧。每天带你学习C/C++不同的知识。也完全可以看到最新更新和之前发表的文章哦。如果足下基本比较差。不妨关注下每一个人都可以学习的视频教程

以上就是由优质生活领域创作者 生活常识网 整理编辑的,如果觉得有帮助欢迎收藏转发~

分享到 :
相关推荐

资生堂旗下都有什么品牌的化妆品(日本资生堂旗下都有那些化妆品品牌)

请用语音读文章现在市面上较具知名度的化妆品品牌基本都是来全球几大知名化妆品集团。之[...

新的一月销售鼓励的话大全(销售新的一月激励话语)

请用语音读文章新的一月销售鼓励的话  (一)人生是一本书。封面是父母给的。内容[&h...

章华生态焗油染发霜质量怎么样(8批次染发产品上黑榜)

请用语音读文章染发产品的标识混乱问题依旧严峻。1月20日。上海市药品监督管理局发布[...

电脑上网行为管理软件排行榜(上网行为管理的主要功能)

请用语音读文章路由系统、又称RouterOS。已经是一个非常开源的技术了。不管是在[...

发表评论

您的电子邮箱地址不会被公开。