簡體   English   中英

WINAPI代表什么?

[英]what does WINAPI stand for

我已經開始在C中學習Win32 API。我看到主要功能是類似的

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) { .. }

但我知道C中的函數就像

[ReturnType] [FunctionName] (Args) { .. }

在這種情況下,返回類型為int,函數名稱為WinMain。 那么WINAPI代表什么,是否有必要?

謝謝 。 :)

它指定了調用約定 ,即函數的參數在堆棧上的放置和管理方式。

您可以混合使用調用約定,例如,如果您正在調用某些外部代碼,例如Windows API,只要每個人都在他們期望的同一“頁面”上。

典型的c調用使用所謂的cdecl編譯。 在cdecl中,調用者清理堆棧上推送的參數。

WINAPI,也稱為“標准調用”,意味着被調用函數負責清理其參數堆棧。

MS編譯器將使用_前綴cdecl調用,而WINAPI獲取前導_並在函數名稱變形時獲得函數名稱前面的@ {BYTES-NEEDED}。 從上面的鏈接:

call        _sumExample@8  ;WINAPI
call        _someExample   ;cdecl

它是“調用約定”,用#define定義為宏並解析為__stdcall

在MSDN上閱讀更多內容

裝飾名稱的方式取決於語言以及如何指示編譯器使函數可用,即調用約定。 DLL使用的Windows標准進程間調用約定稱為WinAPI約定。 它在Windows頭文件中定義為WINAPI,后者又使用Win32聲明符__stdcall定義。

贏 - Windows

API - 應用程序編程接口

Windows應用程序編程接口

暫無
暫無

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

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