typedef定义函数类型或函数指针

Posted winifredhpcl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) == -1)
        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定义函数类型或函数指针的主要内容,如果未能解决你的问题,请参考以下文章

typedef 返回类型(*Function)(参数表) ——typedef函数指针

typedef 的使用

理解 typedef 定义的函数指针

使用typedef给函数指针类型一个别名

[C++11]通过using定义基础类型和函数指针别名

类函数指针(不涵盖:返回类函数指针)