2010-11-27 170 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

相关问题