回调函数

✍ dations ◷ 2025-10-06 17:24:49 #计算机编程

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

回调的用途十分广泛。例如,假设有一个函数,其功能为读取配置文件并由文件内容设置对应的选项。若这些选项由散列值所标记,则让这个函数接受一个回调会使得程序设计更加灵活:函数的调用者可以使用所希望的散列算法,该算法由一个将选项名转变为散列值的回调函数实现;因此,回调允许函数调用者在运行时调整原始函数的行为。

回调的另一种用途在于处理信号或者类似物。例如一个POSIX程序可能在收到SIGTERM信号时不愿立即终止;为了保证一切运行良好,该程序可以将清理函数注册为SIGTERM信号对应的回调。

回调亦可以用于控制一个函数是否作为:Xlib允许自定义的谓词用于决定程序是否希望处理特定的事件。

下列C语言代码描述了利用回调处理POSIX风格的信号(在本示例中为SIGUSR1)的过程。值得注意的是,在处理信号的过程中,调用printf(3)是不安全的。

#include <stdio.h>#include <signal.h>#include <unistd.h>void sig(int signum){        printf("Received signal number %d!\n", signum);}int main(int argc, char *argv){        signal(SIGUSR1, sig);        pause();                return 0;}

系统调用pause(3)会导致这个例子不做任何有意义的事,但这样做可以给你充分的时间来给这个进程发送信号。(在类Unix系统上,可以调用kill -USR1 <pid>,其中<pid>代表该程序的进程号。运行之后,该程序应当会有反应。)

回调的形式因程序设计语言而有差别。

相关

  • 褐藻素褐藻素(Fucoxanthin)是分子式为C42H58O6的叶黄素类,是褐藻纲的叶绿体中常见的色素,也存在在及大部分不等鞭毛类生物中,使其有褐色至绿色的色泽。褐藻素会吸收可见光谱中蓝绿色至
  • 短波热疗短波热疗(英语:Short-Wave Diathermy)是利用短波(电磁波的一种)产生的热效应进行治疗的一种方法,是属于物理治疗中深层热疗(Deep Heat,指治疗深度达2公分以上的热疗)中的一种。短波
  • 开始出现药效药物效应动力学(英语:Pharmacodynamics (PD) ),简称药效学,是药理学的一个分支,主要研究药物作用(action)与药理效应(effects)(即药物对机体的作用及作用机制(mechanism of action)
  • San Francisco Chronicle《旧金山纪事报》(英语:San Francisco Chronicle,又称《旧金山新闻》)是北加利福尼亚地区发行量最大的报纸,同时也是美国发行量最大的报纸之一,订户主要集中在旧金山湾区,但该报发
  • 江淮民系中华人民共和国(中国大陆) (江淮文化是指以今江苏省、安徽省中部为中心形成和发展的一种地域文化。其间居民被称为江淮民系,是使用江淮官话(“江淮方言”、“江淮话”或“淮
  • 定向演化定向演化,也成为直生论,是有关生物演化的学说,其基本观点是生物演化按照一定步骤依生物自身能力而向一定方向进行,与外部环境无关。这种观点否认了自然选择的可能。
  • 勾玉勾玉又称曲玉,是日本、朝鲜、琉球的一种首饰,呈月牙状,形似标点符号的逗号。有首尾之分,首端宽而圆,有一钻孔,可系绳,尾端则尖而细。常见材质大多为翡翠、玛瑙、水晶、滑石等。也有
  • 正统史观正统,出自儒家五经之一的《春秋》一书,既是历史观,也是政治观,又称法统、道统、礼仪之统,分为“居正”和“一统”两个层面。“居正”的意思是符合儒家道统,《汉书》曰:“《春秋》法
  • 电动步道电动步道(英文:Moving walkway 或 Travelator),又称为自动人行道或行人输送带,为一种以运输带方式来运输乘客运送行人的运输工具,相当类似电扶梯,不过是以水平或稍微倾斜的方式移动
  • 藤花藤花是中国传说中的植物,外形像菱菜。早上是紫色,中午是绿色,下午是黄色,傍晚是青色,晚上是红色,有五种颜色。