即使在这里阅读了有关此主题的一些答案之后,我还是很难理解以下语法的作用:
typedef BOOL (WINAPI *DllEntryProc)(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);
我的猜测:它将DllEntryProc
数据类型定义为BOOL
的别名,其中DllEntryProc
是指向以一个HINSTANCE
,一个DWORD
和一个LPVOID
作为参数并返回WINAPI
的函数的指针。 ?
上面的代码是this article的一部分,涉及如何从内存中加载DLL。然后像下面这样调用该函数:
DllEntryProc entry = (DllEntryProc) someValue;
(*entry)((HINSTANCE)baseAddress, DLL_PROCESS_ATTACH, 0);
返回BOOL
(由于那个typedef),对吧?
DllEntryProc
数据类型作为BOOL的别名,其中DllEntryProc是指向一个函数的指针,该函数以一个HINSTANCE,一个DWORD和一个LPVOID作为参数并返回WINAPI [C0 ]
BOOL
[typedef BOOL (WINAPI *DllEntryProc)(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);
是类似于DllEntryProc
的新类型,可以像声明int
类型的变量一样声明此类型的变量。]>
int
现在您可以分配给DllEntryProc somevar;
的值应该是somevar
类型,它是指向所述类型的函数的指针。
友好名称
typedef int (*test_p)(int a, char b, float c);
创建函数指针类型。简而言之,函数指针的工作方式如下: