博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回调函数的小例子(叫醒服务场景)
阅读量:7114 次
发布时间:2019-06-28

本文共 994 字,大约阅读时间需要 3 分钟。

hot3.png

还是抄知乎的例子来说吧:客人们去住店,旅店提供叫醒服务,不过叫醒方式可以由客人们自己要求,有要求大声喊醒的,有要敲锣打鼓的,有要求浇冷水的……,这个叫醒服务的方式就是回调函数。

先来搞个函数签名文件:check_in.h

#include 
//住店的时候要求注册一个wake函数void check_in(char* geust,void(*wake)(char*));

旅店实现check_in方法:

#include "check_in.h"void check_in(char* name,void(*wake)(char*){    printf("有人住店了,客人姓名是:%s\n",name);    printf("过了一段时间,该叫醒他了\n");    wake(name);}

旅店部分的工作已经做完了,我们来编译成一个动态链接库,gcc check_in.c -fPIC -shared -o check_in.so。

-------------------------------------------------------------------------------------------------------------

客人住店来了,他们要自己去实现wake方法。我们把这个测试文件就叫做guest.c吧:

#include "check_in.h"void wake1(char* name){   printf("%s要求大喊:SB,起来了!\n",name);}void wake2(char* name){   printf("%s要求:直接在头上来一盆冷水!\n",name); }int main(){   //张三来住店 要求大喊这种叫醒服务   char* name1 = "张三";   check_in(name1,wake1);      //李四来住店 要求泼冷水这种叫醒服务   char* name2 = "李四";   check_in(name2,wake2);      return 0;}

编译一下:gcc guest.c -L. check_in.so -o check

运行结果如下:

转载于:https://my.oschina.net/zwyang/blog/1610013

你可能感兴趣的文章
1189:Pell数列
查看>>
求水缸深度-深信服2019春招
查看>>
用vs2008编写的控制台程序怎么改exe文件的图标?(转)
查看>>
NSDate管理日期和时间
查看>>
MySQL存储过程(转)
查看>>
hadoop 集群跑的时候用到hbasejar 文件的引用问题
查看>>
大数据性能调优之HBase的RowKey设计
查看>>
BZOJ 1121 [POI2008]激光发射器SZK
查看>>
arc082E ConvexScore
查看>>
YOGA 710-14IKB 安装Ubuntu16.04笔记
查看>>
Windows - 程序猿应该熟记的CMD常用命令
查看>>
jdbc 占位符插入null值 NullPointerException
查看>>
C#中常见的系统内置委托用法详解(抄录)
查看>>
【Linux入门学习之】Linux关机命令总结
查看>>
Linux下mail/mailx命令发送邮件
查看>>
学术诚信与职业道德的思考
查看>>
对象大小对比之Comparable与Comparator
查看>>
POJ2513 欧拉 + 字典树
查看>>
hdu 5480(前缀和)
查看>>
内部类
查看>>