歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Copyright © Linux教程網 All Rights Reserved