c语言函数注册与回调,在C中注册回调函数是什么意思?
谁能告诉我在C中注册一些示例的回调函数的确切含义? 我在网上进行了很多搜索,但找不到满意的答案。 甚至在堆栈溢出中进行搜索,但都无法获得完美的想法。
什么是通知回调和异步回叫?
C中什么是"回调"的可能重复形式以及如何实现?
另请参阅stackoverflow.com/a/147241/20270
Wikipedia页面是不错的en.wikipedia.org/wiki/Callback_%28computer_programming%29
stackoverflow.com/questions/2152974/
注册回调函数只是意味着您正在安排一个外部实体来调用您的函数。
它可能会在以后发生,或者可能立即发生。一个简单的例子是qsort。声明如下:
void qsort(void *base, size_t nel, size_t width,
int (*compar)(const void *, const void *));
为了使用它,必须将指针传递给比较元素的函数-回调。
那是一个简单的示例,但是通常"注册回调"意味着将函数指针传递给将来会为您调用该函数的人。
注册回调意味着将函数指针传递给将通过该指针调用函数的函数指针
为了更容易理解,请考虑A和B,它们是代码中涉及的两个实体。
一个写了一个函数说myFunc
char myFunc(int a)
{
/* Code written by A*/
}
现在,当说到A将向B注册一个回调时,这意味着A将向B发送函数指针
通过向B发送函数指针,A提供了对函数的访问
要注册回调,将有一个函数,其中A可以传递指针
A将调用该函数为
cb_register(myFunc);
// Passed the address of Function
此cb_register函数在B中定义为
typedef void (*cb_fn_ptr)(int a);
void cb_register(cb_fn_ptr cb)
{
// In this function B can store the address in a structure member
}
例如,声明了一个struct_B来存储
struct s_B {
cb_fn_ptr cb;
// cb will have address whenever B
};
B已存储了地址(函数指针指向该地址),以后可以使用它来调用函数。
当B通过函数指针调用函数时,称为回调。
B只需知道调用该函数的函数原型,就可以完全不知道该函数做什么。
在这种情况下,函数将调用为
struct s_B temp;
char ret_val;
int arg_val;
ret_val = temp->cb(arg_val)
//This is a callback
c语言函数注册与回调,在C中注册回调函数是什么意思?相关推荐
- R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts))
R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts)) ...
- 2、组件注册-@Configuration@Bean给容器中注册组件
2.组件注册-@Configuration&@Bean给容器中注册组件 2.1 创建maven项目 spring-annotation pom.xml文件添加 spring-context 依 ...
- python语言format是什么意思_Python代码中str.format()函数有什么功能呢?
摘要: 下文讲述Python代码中str.format()函数的简介说明,如下所示: str.format()函数功能 用于将字符串格式化,然后输出 str.format()函数语法 通过{} 和:替 ...
- c语言把一个字符从指定文件中读取的函数,C语言中对文件最基本的读取和写入函数...
C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...
- c语言isnumber函数的使用方法,在excel中使用ISNUMBER函数的详细步骤介绍
软件大小: 73 MB 软件版本: 2010高级标准版 软件类型: 办公工具 查看详情 直接下载 yesky 标签: 想知道excel中ISNUMBER函数怎么使用吗?以下是小编给大家整理的在exce ...
- 关于python中lambda函数的描述_关于Python中的lambda函数
lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...
- php gd库 函数 建立gif,PHP_PHP GD库生成图像的几个函数总结,使用GD库中提供的函数动态绘 - phpStudy...
PHP GD库生成图像的几个函数总结 使用GD库中提供的函数动态绘制完成图像以后,就需要输出到浏览器或者将图像保存起来.在PHP中,可以将动态绘制完成的画布,直接生成GIF.JPEG.PNG和WBMP ...
- 减一天 日期函数_一文掌握excel中的日期函数
在excel中,因为日期的特殊性,大部分关于日期的运算都要用到特有的函数.对于大多数小伙伴们可能没有专门去学习过日期函数都有哪些?如何运用?可以实现什么样的功能?今天小编就为大家整理出来并详细介绍一下 ...
- string类有可以调换方向的函数吗_深度剖析C++中的inline函数
点蓝色字关注"CurryCoder" 微信公众号:CurryCoder的程序人生 怕什么真理无穷,进一寸有一寸的欢喜 1.inline函数的爱恨两难 内联函数比宏优点好很多,详细原 ...
最新文章
- 移植 thttpd Web服务器
- 机器学习项目的备忘清单!
- CUDA学习-计算实际线程ID
- Android网络连接异常处理方案
- 自动化运帷之分布式监控 zabbix 使用
- Python面试题目--汇总
- Mybatis中jdbcType和javaType的对应关系
- 【IPF2020】浪潮集团副总裁、渠道管理部总经理王峰:赋能智慧生态 筑基新基建
- vue项目路径修改及打包上传到服务器
- 接口上线平滑处理_业务系统割接上线关键点和割接方案内容说明
- 转载:为什么OpenFlow没有被广泛采用?
- 五子棋初步以及对五子棋的局面估值
- 自然资源部信息化建设总体方案摘要记录
- linux静态ip解析花生壳域名
- 有备无患!DBS高性价比方案助力富途证券备份上云
- mysql 插入缓冲_innodb insert buffer 插入缓冲区的理解
- A53内核板卡,平板电脑、电视盒子完美方案
- 典型计算机电路组成,硬件工程师必会的几道题
- stm32串口自定义协议接收一串十六进制数据(将其中两个字节转化为十进制数据)+部分串口基础知识
- 聊一聊上拉电阻、下拉电阻、使用场景及阻值选择
热门文章
- 【Linux】使用kill命令杀不死进程
- 华大HC32L136系列芯片功耗
- 微信公众号 网页支付的实现
- 窗口部件标志和几何布局
- 空间平面方程 java,【数学】 三维空间中圆的方程
- nyoj27 水池数目
- 【MySQL基本使用】
- 电脑核显可以用html吗,集成核显的电脑也能玩GTA5!只要修改这两个设置,流畅到无法想象...
- Docker学习笔记6——Docker网络(幕布笔记)
- Anaconda conda 不能用,一直Solving enviroment 最后报错CondaHTTPError: HTTP 000 CONNECTION FAILED for url