2012-11-19 9 views
9

のために何を立つん私は主な機能はWINAPIは

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

のようなものであることがわかりましたC. でのWin32 APIを学び始めましたが、私は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規則として知られています。 WINAPIとしてWindowsヘッダーファイルに が定義されています.WEAPIは、 Win32宣言子__stdcallを使用して定義されています。

+0

、あなたの先生に感謝します。 – Videron

-3

勝利 - Windowsの

はAPI - アプリケーションプログラミングインタフェース

Windowsアプリケーションプログラミングインターフェイス私は理解して

+0

この質問は、用語そのものよりも「WINAPI」呼び出し規約に関するものです。 – TLama