typedef定义函数类型或函数指针
转载请标明出处;
最近在看redis的代码,发现了有关函数指针的部分,想把它记下来。
在redis中有类似下面的定义,利用typedef 定义了一个新的类型,这种类型是一个函数:
typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);
然后可以用这个类型定义一个指针,这个指针指向一个函数,具体redis中使用如下(具体redis的源码解析,后面的文章中还会提到):
aeFileProc *rfileProc;
aeFileProc *wfileProc;
int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask,
aeFileProc *proc, void *clientData)
{
if (fd >= eventLoop->setsize) {
errno = ERANGE;
return AE_ERR;
}
aeFileEvent *fe = &eventLoop->events[fd]; if (aeApiAddEvent(eventLoop, fd, mask) == -)
return AE_ERR;
fe->mask |= mask;
if (mask & AE_READABLE) fe->rfileProc = proc;
if (mask & AE_WRITABLE) fe->wfileProc = proc;
fe->clientData = clientData;
if (fd > eventLoop->maxfd)
eventLoop->maxfd = fd;
return AE_OK;
}
typedef定义函数类型或函数指针的更多相关文章
- 函数类型+WINAPI+函数名(例如inline DWORD static WINAPI RecordToKeys(const DRWT& theDRWT,WTSBH* pKey,DWORD dwMaxNum)
winapi标识符在WINDEF.H定义,语句如下: #define winapi __stdcall 让我们说说这个__stdcall stdcall调用约定 stdcall很多时候被称为pasca ...
- typedef定义数组类型
typedef语句定义数组类型 1. 一维数组类型的定义格式 typedef <元素类型关键字><数组类型名>[<常量表达式>]; 例如: (1) typedef ...
- Swift - 33 - 返回函数类型和函数嵌套
//: Playground - noun: a place where people can play import UIKit /*---------------------------返回函数类 ...
- T-SQL函数类型——系统函数
1 ??? 为什么 123 和'123'的ISNUMERIC()返回结果相同. SELECT ISNUMERIC(123) --结果为1SELECT ISNUMERIC('123') --结果为1S ...
- c++中的函数重载、函数重写、函数重定义
目录 一.函数重载 二.函数重写 三.函数重定义 为了更加深刻的理解 函数重载.重写.重定义,我们可以带着如下这两个问题去思考: 1.子类中是否可以定义父类中的同名成员?为什么? 可以,因为子类与父类 ...
- 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助
小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...
- IDA设置函数类型
http://www.2cto.com/shouce/ida/1361.htm Action name: SetType 该命令允许你指定当前条目类型. 如果光标处在函数内部,那么函数类型将会被编辑, ...
- VC++的函数指针和回调函数 及友元函数
什么是函数指针 函数指针是指向函数的指针变量.也就是说,它是一个指针变量,而且该指针指向一个函数. 对于指针变量来说,它的值是它指向的变量的地址.举个例子:指针变量pi是指向一个整型变量i的指针,则变 ...
- golang中函数类型
今天看Martini文档,其功能列表提到完全兼容http.HandlerFunc接口,就去查阅了Go: net/http的文档,看到type HandlerFunc这部分,顿时蒙圈了.由于之前学习的时 ...
随机推荐
- OpenGL的几何变换[转]
OpenGL的几何变换 1.实验目的: 理解掌握一个OpenGL程序平移.旋转.缩放变换的方法. 2.实验内容: (1)阅读实验原理,运行示范实验代码,掌握OpenGL程序平移.旋转.缩放变换的方法: ...
- latex输入希腊字母
\alpha产生字符α;\beta产生字符β:\gamma产生字符γ:\delta产生字符δ;\epsilon产生字符ε; \zeta产生字符ζ:\eta产生字符η;\theta产生字符9; \iot ...
- C#_抓包HttpWebRequest跟HttpWebResponse
1.第一招,根据URL地址获取网页信息 这招是入门第一式, 特点: 1.最简单最直观的一种,入门课程. 2.适应于明文,无需登录,无需任何验证就可以进入的页面. 3.获取的数据类型为HTML文档. ...
- What is the difference between extensibility and scalability?
You open a small fast food center, with a serving capacity of 5-10 people at a time. But you have en ...
- JSON和JSONP区别和联系
由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...
- drupal_get_path_alias
drupal_get_path_alias('path','language')这个函数是去读取url_alias表,获得某个path在特定language下的alias列的值--刚开始我 dpm(d ...
- The Network Adapter could not establish the connection问题研究
最近一个项目会报上述错误,但也不是经常发生,所以很难跟踪,影响不是很大,但每次看到日志中这个错误就会不舒服,还是要想办法解决才是. 错误提示信息很明确是网络适配器不能创建连接. 查了很多资料,并且Or ...
- Unity5中叹为观止的实时GI效果
http://www.manew.com/thread-43970-1-1.html 今天为大家分享unity与Alex Lovett共同使用unity5制作的Shrine Arch-viz Demo ...
- JQUERY学习(壹)
一.jQuery的引言 1.jQuery框架:对JavaScript的封装,简化js开发 2.jQuery框架的好处: 1)语法简单 js中:document.getElementById(" ...
- hdu----(3068)最长回文(manacher)
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...