回调函数

✍ dations ◷ 2025-05-18 04:45:38 #计算机编程

在计算机程序设计中,回调函数,或简称回调(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>代表该程序的进程号。运行之后,该程序应当会有反应。)

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

相关

  • 腺嘌呤腺嘌呤(英语:Adenine,简称A,旧称维生素B4)是一种嘌呤,在生物化学上具有许多不同的功用。于细胞呼吸中,是以富有能量的腺苷三磷酸(ATP),以及辅因子烟酰胺腺嘌呤二核苷酸(NAD)、黄素腺嘌呤
  • VISAVisa公司(英语:Visa Inc.,标识为VISA;NYSE:V)是总部位于美国加利福尼亚州福斯特市的跨国金融服务公司。Visa国际组织通过Visa品牌的信用卡(Credit Card)和借记卡(Debit Card)促进全球
  • 千瓦·时1千瓦⋅时或千瓦小时(符号:kW⋅h;常简称为度)是能量量度单位,表示一件功率为一千瓦的电器在使用一小时之后所消耗的能量,或等于3.6百万焦耳。“千瓦⋅小时”这个单位主要用于量度
  • 中古汉语中古汉语使用于南北朝、隋朝、唐朝时期,继承自上古汉语,后来发展为近代汉语。现代语言学家根据当时的文献资料重建出其特征。对于中古汉语和近代汉语(有材料称为近古汉语)的分界
  • 借词借词可以指:
  • 朝鲜民主主义人民共和国行政区划 朝鲜民主主义人民共和国主题朝鲜民主主义人民共和国的实际控制区现分9个道、1个直辖市、3特别市和3个特区。朝鲜行政体系的基本构造为直辖市、道 - 特别市、市 - 郡、区域
  • 微电极 (电生理学)微电极(microelectrode)是一种非常小的电极,被使用在电生理学中来记录神经信号或是神经组织的电刺激(英语:Functional_electrical_stimulation)。起初是使用玻璃吸量管微电极,后来
  • 奠基石奠基石是一种在建筑物奠基时安放在外墙上的石块,上面刻有纪念奠基的铭文。有些奠基石并不是实心,而是内藏一个空间放置时间囊,待建筑物拆卸时,时间囊才得以重见天日。在中国文学
  • F·莫里·亚伯拉罕F·莫里·亚伯拉罕(英语:F. Murray Abraham,1939年10月24日-),美国男演员,凭借1984年音乐传记电影《莫扎特传》获奥斯卡最佳男主角奖,该片由米洛斯·福曼执导,描述音乐神童沃尔夫冈·
  • 亚历山大·古登威泽尔亚历山大·古登威泽尔(Александр Александрович Гольденвейзер,1880年1月29日-1940年7月4日),俄国出生的美国人类学家和社会学家。