这是代码:
// 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
是如何在这里使用的。请解释一下。
答案 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);