难以理解沿着函数指针的typedef

问题描述 投票:1回答:3

即使在这里阅读了有关此主题的一些答案之后,我还是很难理解以下语法的作用:

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),对吧?

c pointers winapi syntax typedef
3个回答
2
投票
它定义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类型,它是指向所述类型的函数的指针。

0
投票
  • 当将typedef用作函数指针时,可以给它一个

    友好名称


0
投票
typedef int (*test_p)(int a, char b, float c); 创建函数指针类型。简而言之,函数指针的工作方式如下:
© www.soinside.com 2019 - 2024. All rights reserved.