共用方式為


__stdcall

Microsoft 專有的

__stdcall呼叫慣例用來呼叫 Win32 API 函式。被呼叫端會清除堆疊,所以編譯器進行 vararg 函式__cdecl。使用此呼叫慣例的函式需要函式原型。

return-type __stdcall function-name[(argument-list)]

備註

下列清單會顯示這個呼叫慣例的實作。

項目

實作

傳遞引數的順序

由右至左。

引數傳遞轉換

傳值,除非傳遞為指標或參考型別。

堆疊維護責任

從堆疊自己的引數呼叫函式的 pop。

名稱裝飾慣例

名稱有前置底線 (_)。名稱後面跟著小老鼠符號 (@),後面接著的位元組數 (以十進位) 引數清單中。因此,此函式宣告為int func( int a, double b )來裝飾,如下所示:_func@12

大小寫轉譯慣例

None

/Gz 編譯器選項指定__stdcall的所有未明確宣告具有不同的呼叫慣例的函式。

使用宣告的函式__stdcall修飾詞的傳回值的函式宣告使用相同的方式來 __cdecl

在 Itanium 處理器系列 (IPF) 和 x64 處理器, __stdcall加以接受並由編譯器 ; 略過 在 IPF,依照慣例,傳遞參數暫存器中。

對於非靜態類別的函式,函式是定義的出行,如果呼叫慣例修飾詞並沒有指定行超出定義上。也就是類別的非靜態成員方法,在宣告期間指定的呼叫慣例會假設為定義點。此類別定義中,

struct CMyClass {
   void __stdcall mymethod();
};

this

void CMyClass::mymethod() { return; }

這等於是

void __stdcall CMyClass::mymethod() { return; }

範例

在下列範例中,使用 __服務繼續操作中的所有郵件會產生WINAPI函式型別被視為標準的呼叫:

// Example of the __stdcall keyword
#define WINAPI __stdcall
// Example of the __stdcall keyword on function pointer
typedef BOOL (__stdcall *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);

請參閱

參考

引數傳遞,和命名慣例

C + + 關鍵字