__stdcall
読み:アンダースコア-アンダースコア-スタンダードコール
外語:__stdcall: Standard call
x86系プロセッサーにおけるCの独自機能の一つで、数種類ある関数の呼び出し規約の一つ。
概要
Stdcall呼び出しシーケンスを使って関数を呼び出す規約には、次のような特徴がある。
- 引数の渡しかた: スタック経由のみ
- スタックへの積みかた: 右から左にPUSHする
- スタックに積まれた引数の始末: 関数が呼び出された側で行なう
その他、次のような特徴がある。
- _を生成しない
- 大文字・小文字を区別しない
- 関数は引数の正確な数と型を渡す必要がある
変数の型の特定が必要なため、__stdcallの関数はプロトタイプ宣言が必須である。
特徴
殆どのWin32 APIは__stdcallで定義されている。
より具体的には、Microsoft Visual C++ 2003環境では、windef.hで次のように定義される。
こうして、Win32 APIは概ね、関数名の前にWINAPIを付けて表現される。例えば、
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);
といった具合である。
再検索