Possible Duplicate:
Typedef function pointer?
TE0300_Open = (_TE0300_Open)GetProcAddress(hInstLibrary, "TE0300_Open");
typedef int (WINAPI *_TE0300_Open)(unsigned int* PHandle, int CardNo);
谁能解释一下这段代码的作用?我知道 typedef
用于为现有类型分配替代名称,但我根本不理解这种情况。
typedef int (WINAPI *_TE0300_Open)(unsigned int* PHandle, int CardNo);
这一行 typedef 函数指针指向 WINAPI
调用约定函数返回一个 int
,并采用一个 unsigned int *
和一个 整数
。函数指针类型的别名是 _TE0300_Open
。
考虑以下示例:
typedef void (*func)();
void foo (func f) //notice we have a nice type name here
{
cout << "Calling function...";
f();
}
void bar(){}
int main()
{
foo (bar);
}
我相信 C++11 在使用函数指针时也增加了对不那么讨厌的语法的支持:
using func = void (*)();
至于您的 GetProcAddress
调用,它会从库中加载一个函数。您将它分配给一个函数指针,然后您可以像使用原始函数一样使用该函数指针。
在您的示例中,您现在可以像通常调用 _TE0300_Open
一样调用 TE0300_Open
。还应注意,_TE0300_Open
是为实现保留的名称。