Linux回调函数的应用---已经验证
16lz
2021-01-22
如果参数是一个函数指针,调用者可以传递一个函数的地址给实现者,让实现者去调用它,这称为回调函数(Callback Function)。例如qsort(3)
和bsearch(3)
。
表24.7.回调函数示例:void func(void (*f)(void *), void *p);
调用者 | 实现者 |
---|---|
|
|
以下是一个简单的例子。实现了一个repeat_three_times
函数,可以把调用者传来的任何回调函数连续执行三次。
例24.7.回调函数
/* para_callback.h */
#ifndef PARA_CALLBACK_H
#define PARA_CALLBACK_H
typedef void (*callback_t)(void *);
extern void repeat_three_times(callback_t, void *);
#endif
/* para_callback.c */#include "para_callback.h"void repeat_three_times(callback_t f, void *para){ f(para); f(para); f(para);}
/* main.c */#include <stdio.h>#include "para_callback.h"void say_hello(void *str){ printf("Hello %s/n", (const char *)str);}void count_numbers(void *num){ int i; for(i=1; i<=(int)num; i++) printf("%d ", i); putchar('/n');}int main(void){ repeat_three_times(say_hello, "Guys"); repeat_three_times(count_numbers, (void *)4); return 0;}
更多相关文章
- c中变参函数的理解和编写(hello world引发的思考)
- 浅谈Oracle函数返回Table集合
- Linux-C语言函数手册
- Linux 下nice 函数用法提高一个进程的友善值
- 设置查看linux 造成程序Core dumped 的函数调用层次
- linux 下命令行传参数问题
- 为什么函数在ELF中的其他共享库的长度信息?
- Linux内核中的container_of函数简要介绍
- Linux环境下注册函数的调用顺序