回调函数

✍ dations ◷ 2025-08-27 02:37:09 #计算机编程

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

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

相关

  • 史慕扬雷蒙·梅里儿·思木里安(英语:Raymond Smullyan,1919年5月25日-2017年2月6日)出生于纽约皇后区的远洛克威,2017年2月6日逝世于纽约市,是一位美国数学家,逻辑学家,哲学家,魔术师和钢琴
  • 金鸡纳树约25种;另见本文金鸡纳树属(学名:Cinchona,又称作鸡纳树、金鸡勒、奎宁树)为茜草科的一属,约包含25种的物种,树皮和根皮是提取奎宁和奎尼丁的重要工业原料。一般为常绿小乔木,高度约
  • 比利时狮“比利时雄狮”(拉丁原文“Belgic Lion”)是在欧洲纹章和地图系统中常见的雄狮形状,一般用来标志西欧的低地国家,也就是今天的荷兰,卢森堡以及比利时。“比利时”一词是从拉丁语
  • 阴道内给药阴道内给药(英语:Intravaginal administration)是一种将药物直接施加在阴道内的给药途径,在药理学上,用此方式对阴道内或附近结构给药,有其潜在的优势,药物主要会在阴道内或附近的
  • 璷妃璷妃(1841年-1895年),叶赫那拉氏,满洲正白旗主事全文之女。清朝咸丰帝之妃。道光二十一年(1841年)二月十日出生。咸丰初年,通过内务府选秀成为宫女,与禧妃、庆妃、吉妃被俗称为四春娘
  • 聚合反应聚合是将一种或几种具有简单小分子的物质,合并成具有大分子量的物质的化工单元过程。大分子量的物质一般叫作聚合物或高分子化合物,分子量都高达几千甚至几百万。淀粉、纤维素
  • 山里红山楂(学名:Crataegus pinnatifida)是蔷薇科山楂属落叶乔木,也叫酸楂、仙楂、仙查、山查。山楂的成熟果实可生用或炒黄焦用入药。山楂果实被广泛用于制造糖葫芦、果丹皮、山楂饼
  • 长韶娄高速公路长韶娄高速公路(湘高速S50)是中华人民共和国湖南省省内连接长沙市、韶山市、娄底市三个城市之间的一条高速公路。长韶娄高速公路长达139.151公里,韶山支线全长14.942公里,娄底北
  • 回回文回语、回文、回回语、回回文可以指:
  • 景章景章(1559年-1618年),字速卿,号云河,四川叙州府富顺县人,民籍,治《诗经》,年二十八岁中式万历十四年丙戌科第三甲第一百八十三名进士。戊午年二月二十九日生,行三,曾祖景冲祖;祖景旦,庠生