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;
}

猜你喜欢

转载自www.linuxidc.com/Linux/2016-09/134889.htm
今日推荐