0

这是代码:

// 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这里是如何使用的。请解释。

4

3 回答 3

3

typedef本身为指向函数的指针定义了一个类型别名,该函数看起来像:

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

该变量LogOpen是实际的指向函数的指针。稍后将结果ImportSymbol转换为指向函数的指针。

于 2013-09-11T06:25:11.527 回答
2

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

于 2013-09-11T06:24:29.807 回答
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);
于 2013-09-11T06:29:46.130 回答