请解释一下typedef的用法

时间:2013-09-11 06:21:40

标签: c function pointers typedef

这是代码:

// Global Definitions/Declarations:

typedef void * LOGHANDLE;

typedef LOGHANDLE (STD_CALL *LogOpen_T)
       (unsigned char *, 
        unsigned char *, 
        unsigned long, 
        unsigned long *);

LogOpen_T LogOpen;

// Inside some function:
    ...
    LogOpen = (LogOpen_T)ImportSymbol(moduleHandle, "LogOpen" );
    if (LogOpen == NULL)
    {
         err = -2;
    }
    ...

我无法理解typedef是如何在这里使用的。请解释一下。

3 个答案:

答案 0 :(得分:3)

typedef本身为函数指针定义了一个类型别名,其函数如下所示:

void * STD_CALL f(unsigned char *, unsigned char *, unsigned long, unsigned long *);

变量LogOpen是实际的指向函数的指针。之后,ImportSymbol的结果被转换为指向函数的指针。

答案 1 :(得分:2)

LOGHANDLE定义了一个可以指向任何东西的指针。 LogOpen_T定义了一个函数指针。

答案 2 :(得分:1)

这是一个指向原型

功能的指针
LONGHANDLE functionname
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *);

使用示例

LOGHANDLE mylogfunction
   (unsigned char *, 
    unsigned char *, 
    unsigned long, 
    unsigned long *){/* code*/}


LogOpen_T function_handle = (LogOpen_T)(&mylogfunction);