码迷,mamicode.com
首页 > 编程语言 > 详细

C语言回调函数

时间:2019-11-18 18:08:48      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:执行   nbsp   完成后   roc   异步   回调   void   ini   something   

回调函数刚开始理解的时候是有点困难,回调函数主要的目的是让使用者通过函数处理掉数据,不需要再次读取当前操作的完成状态,从而实现功能。

以异步写入EEPROM为例:

如果在异步写入E2之后,原本的操作是让使用者轮询当前任务是否完成,这样写出来的代码类似于:

if(true == E2WriteFinish())
{
//TODO something
}

 

等待写完之后再执行其他任务,但是如果使用回调函数,就可以在写入的时候附加一个回调的钩子,类似于这样:

1 EepromWrite(int* data,int length,int address,void (*p)(int result));

最后这个就是丢给写任务的回调函数,然后我们可以自己写这个任务完成后需要做的事情:

void E2WriteFinishProcess(int result)
{
//TODO something
}

整个函数执行的流程是这样的

使用者调用 EepromWrite()→函数执行→在里边调用(*p)(result);

这样对使用者来说只需要执行写函数就可以了,不用在每次周期轮询是否异步写完了的操作。如果理解了的话回调函数还是比较简单的。

 

 

 

C语言回调函数

标签:执行   nbsp   完成后   roc   异步   回调   void   ini   something   

原文地址:https://www.cnblogs.com/lengzc/p/11883596.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!