2012-11-19 34 views
9

我已經開始學習的Win32 API在C 我看到的主要功能是一樣的東西是什麼WINAPI代表

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

,但我知道,在C的功能就像是

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

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

謝謝。 :)

回答

12

它指定calling convention,這是函數參數在堆棧上的放置和管理方式。

只要每個人都與他們的期望在同一個「頁面」上,你可以混用調用約定,比如說你調用了一些外部代碼,比如windows API。

典型的c調用使用所謂的cdecl進行編譯。在cdecl中,調用者清除棧中推送的參數。

WINAPI,也稱爲「標準調用」,意味着被調用的函數負責清理其參數堆棧。

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

call  [email protected] ;WINAPI 
call  _someExample ;cdecl 
+0

+1爲調用約定的鏈接! –

3

它是「調用約定」,定義爲與#define宏並解析爲__stdcall

更多on MSDN

名都裝飾的方式取決於語言和編譯器 指示如何使現有的功能,也就是 調用約定。 DLL使用的標準進程間調用約定爲 Windows被稱爲WinAPI約定。它在Windows頭文件中定義爲 作爲WINAPI,WINAPI又使用 Win32聲明符__stdcall定義。

+0

我明白了,謝謝主席先生。 – Videron

-3

贏 - 視窗

API - 應用程序編程接口

的Windows應用程序編程接口

+0

這個問題與'WINAPI'調用約定有關,而不是關於術語本身。 – TLama