有谁可以请我提供以下2行代码的全部含义?
typedef void DLLEXPORT __stdcall(* DLL_Inquiry)(char * cDriverName,int * iDriverType,int * iDriverBUS,int * iNumberOfChannel);
DLL_Inquiry DRV_PH_Inquiry;
我知道DLLEXPORT
是从DLL导出函数,__stdcall
是传递约定的 x86 参数。
但我仍然无法得到这两行的全部含义。可能是我对typedef
中的函数或函数指针的使用感到困惑。
答案 0 :(得分:1)
DLL_Incuiry
是指向函数的指针的typedef,它接受参数(char*, int*, int*, int*)
并且不返回任何值(返回类型void
)。该函数还使用DLLEXPORT和__stdcall定义的调用约定。
DRV_PH_Inquiry
是该类型的变量,因此如果您有函数foo
:
void DLLEXPORT __stdcall foo (char *cDriverName, int *iDriverType, int *iDriverBUS, int *iNumberOfChannel);
然后你可以完成任务:
DRV_PH_Inquiry = foo; // DRV_PH_Inquiry now points to the function foo
答案 1 :(得分:1)
typedef void DLLEXPORT __stdcall (*DLL_Inquiry) (
char *cDriverName, int *iDriverType, int *iDriverBUS, int *iNumberOfChannel);
这将DLL_Inquiry
的typedef定义为函数指针。
void
返回类型。 __stdcall
。DLLEXPORT
的定义不是标准。这将在您的代码中找到。最有可能会有一个头文件将DLLEXPORT
定义为宏。例如,在编译DLL时,在Windows平台上,它可能会计算为__declspec(dllexport)
。在任何情况下,只有您可以确切知道DLLEXPORT
的定义是什么。