簡體   English   中英

C中的typedef,DLLEXPORT,__ stdcall幫助

[英]typedef, DLLEXPORT, __stdcall help in C

誰能請我提供以下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中函數或函數指針的使用感到困惑。

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
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的定義是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM