回调函数和普通函数有什么区别?

问题描述 投票:0回答:3

好的,我将给出两个使用

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);

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

c++ winapi visual-c++ callback calling-convention
3个回答
2
投票

基本上,调用约定指定如何调用函数的实现细节。大多数库使用标准 C 调用约定 -

__cdecl
。然而 WinAPI 期望
__stdcall
。您只需要了解有关调用约定的两件事:它们必须匹配,例如,您不能将隐式为
void(*)(int, int)
void(__cdecl *)(int, int)
转换为
void(__stdcall *)(int, int)
,并且默认值为
__cdecl 
CALLBACK
只是一个 WinAPI #define,以便他们可以根据需要进行更改。


2
投票

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


0
投票

回调是传递给另一段代码的函数指针(即地址)。

回调函数的地址通常会传递给常规函数

https://en.wikipedia.org/wiki/Callback_(computer_programming)

© www.soinside.com 2019 - 2024. All rights reserved.