回调函数和常规函数有什么区别?

时间:2010-11-27 19:36:39

标签: c++ winapi visual-c++ callback calling-convention

好的我会给出两个函数示例:CALLBACK和常规函数 注意:我没有写这些例子。

常规功能

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

使用_stdcall

的功能
int __stdcall sumExample (int a, int b);

有什么区别?
注意:我不确定调用约定是如何工作的,一个例子会有所帮助!

2 个答案:

答案 0 :(得分:2)

不多,真的。 “回调”是一个给予函数的名称,该函数将被传递给另一个函数,当......发生一些有用的事情时,它将“回调”它。没有理由它也不能用作常规功能。

答案 1 :(得分:2)

基本上,调用约定指定了如何调用函数的实现细节。大多数库使用标准C调用约定 - __cdecl。但是,WinAPI需要__stdcall。您只需要了解有关调用约定的两件事:它们必须匹配,例如,您无法将void(*)(int, int)(隐含地为void(__cdecl *)(int, int))转换为void(__stdcall *)(int, int),并且默认值为__cdeclCALLBACK只是一个WinAPI #define,以便他们可以根据需要进行更改。