2010-11-27 67 views
1

好吧我會舉兩個例子,功能是使用CALLBACK和常規功能。
注:我沒有寫這些例子。回調函數和常規函數有什麼區別?

則函數使用_stdcall

int __stdcall sumExample (int a, int b); 

的區別是什麼

int sumExample (int a, int b) 
{ 
    return a + b; 
} 
int main() 
{ 
    int = sumExample(1, 3); 
    cout >> int; 
    return 0; 
} 

功能?
注:我不確定呼叫公約如何工作,一個例子會有所幫助!

回答

2

基本上,調用約定指定函數如何被調用的實現細節。大多數圖書館都使用標準C調用約定 - __cdecl。然而WinAPI預計__stdcall。您只需瞭解有關調用約定的兩件事情:它們必須匹配,例如,您不能將void(*)(int, int)(隱含地爲void(__cdecl *)(int, int))轉換爲void(__stdcall *)(int, int),並且默認值爲__cdeclCALLBACK只是一個WinAPI #define,以便他們可以隨時更改。

+0

呃,他們不能改變CALLBACK,因爲那會破壞所有的程序,但是他們能做的是#ifdef它意味着某些其他平臺上的其他東西(例如Alpha,MIPS等) – 2010-11-28 19:56:48

2

並不多,真的。 「回調」是一個給一個函數的名字,當一個有用的事情發生時,這個函數被傳遞給另一個函數,這個函數會「回調」它。沒有理由不能將它用作常規功能。

+0

爲什麼downvote?我同意。 – 2010-11-27 19:47:34

相關問題