首页 > 其他分享 >回调函数和钩子函数的理解

回调函数和钩子函数的理解

时间:2024-10-13 15:46:54浏览次数:9  
标签:... 调用 函数 int 钩子 回调

首先:回调函数和钩子函数不是对立的。
1、回调函数
所谓回调函数,一般就是把函数的地址作为参数传进去,让调用的函数在内部可以调用这个函数,调用完后返回,强调调用和返回,是一种灵活的指向。
例子:定义函数指针 typedef int (*Fun)(int, int);
int add(int a, int b){...};
int sub(int a, int b){...};
void cal(int a, int b, Fun p){...};
当我们调用cal(x, y, add)或者cal(x, y, sub),目的是计算结果2、钩子函数
钩子函数,严格算起来,也算是回调函数的一种,是一种过程监控,是回调函数的一种应用形式。钩子函数主要是针对的过程截取的,当你使用了钩子之后,执行某个过程,如上电启动bootload,那么系统会把bootload当做一个过程,对应的预留一定会执行的bootloader_before_init和bootloader_after_init作为钩子函数,开发人员可以在bootload_before或者after中带入你想要的功能函数(如上面写的计算),当然也可以不带入任何函数。
即原本是:系统-->目标函数
使用钩子就变成:系统-->你写的回调函数-->目标函数

再举个例子例如:在RTOS里面的钩子函数

  • 钩子函数有要求,
    ①允许应用程序设计人员添加后台功能没有单独任务的开销
    ②在任何情况下都不能,调用可能阻塞的函数,必须快进快出
  • 回调函数
    在按键注册机制里面,按键按下以后,我们都是调用的是回调函数。这个时候是处理按键的函数,这个是目的了。
    结论:钩子函数是特殊的回调函数(运用了回调的思想),但回调不一定就是钩子函数。

因此,钩子函数和回调函数的区别在于它们被调用的时机和方式。钩子函数是由系统自动调用,而回调函数是更多强调程序员显式调用。

标签:...,调用,函数,int,钩子,回调
From: https://blog.csdn.net/lityl5/article/details/142894958

相关文章

  • Nuxt.js 应用中的 ready 事件钩子详解
    title:Nuxt.js应用中的ready事件钩子详解date:2024/10/12updated:2024/10/12author:cmdragonexcerpt:ready钩子是Nuxt.js中一个重要的生命周期事件,它在Nuxt实例初始化完成后被调用。当Nuxt已经准备好并准备开始处理请求或渲染页面时,这一钩子会被触发......
  • Nuxt.js 应用中的 kit:compatibility 事件钩子详解
    title:Nuxt.js应用中的kit:compatibility事件钩子详解date:2024/10/11updated:2024/10/11author:cmdragonexcerpt:kit:compatibility是处理浏览器兼容性问题的有效工具。正如本篇文章中所述,合理地利用这一钩子可以提升用户体验,并确保应用在不同环境中都能稳......
  • Nuxt.js 应用中的 close 事件钩子详解
    title:Nuxt.js应用中的close事件钩子详解date:2024/10/13updated:2024/10/13author:cmdragonexcerpt:close钩子是Nuxt.js中一个重要的生命周期事件,它在Nuxt实例正常关闭时被调用。当Nuxt应用的生命周期即将结束时,这一钩子会被触发,让开发者能够执行一些必要......
  • 常用输入输出函数
    常用输入输出函数printf():把输出发送到一个叫作缓冲区(buffer)的中间存储区域。当缓冲区满、遇到换行字符或需要输入的时候迫使printf()的输出被发送到屏幕上。可以使用fflush()函数刷新缓冲区printf()的返回值是待显示字符的个数printf()中如果你不想预先指定字段宽度,希望......
  • FreeRTOS——空闲任务和钩子函数介绍
    空闲任务在前面的学习中我们提到,空闲任务会负责释放一些被删除任务的内存,在FreeRTOS中,用户分配的内存通常也是在空闲任务中释放的。空闲任务是一个特殊的任务,当没有其他任务需要运行时,系统将会调度空闲任务来执行。在空闲任务中可以执行一些低优先级的任务,比如资源的释放和内......
  • PHP获取图片属性(size, width, 和 height)的函数
    在PHP中,要获取图片的尺寸(宽度和高度),你可以使用getimagesize()函数。这个函数不仅返回图片的宽度和高度,还返回图片的类型和MIME类型等信息。以下是getimagesize()函数的基本用法:<?php//假设$imagePath是图片的完整路径$imagePath='path/to/your/image.jpg';......
  • 前端学习第四天笔记 函数 对象 math对象 Date对象 DOM概述 document对象的获取元素、
    文章目录函数函数的声明函数名的提升对象math对象Math.abs()Math.max()和Math.min()Math.floor()和Math.ceil()Math.random()Date对象Date.now()Date对象中的Get方法DOM概述节点节点树Node.nodeType属性document对象_方法/获取元素document.getElementsByTagName()do......
  • C++中比较方便的几个有关字符串的函数
    以下是一些个人总结的C++中对新手来说比较方便使用的几个有关字符串的函数。注意,说的是字符串而不是字符数组。如果有其他,欢迎在评论区留言。1.getline(),这个函数可以输入一行字符串,通常情况下,这个函数的使用通常如下://getline(cin,字符串名);     注意:getline()的......
  • 107-免杀对抗-C&C++&溯源ShellCode上线&混淆变异算法&回调编译执行
    知识点#知识点:1、ShellCode-分析&朔源&感知2、ShellCode-混淆&编码&算法3、回调执行解析-API&汇编&句柄#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll......
  • JavaScript进阶笔记--深入对象-内置构造函数及案例
    深入对象创建对象三种方式利用对象字面量newObject({…})利用构造函数//1.字面量创建对象constobj1={name:'pig',age:18};console.log(obj1);//{name:"pig",age:18}//2.构造函数创建对象functionPig(name,age){......