有谁知道回调函数与普通函数的区别?

时间:2022-08-07 09:26:35
我发现网上说的只是把回调函数当成钩子函数了,难道没有其他的用法了么?
我在程序中定义了一个回调函数,发现可以当作普通函数用!!!
难道回调函数主要就是当作钩子函数??

9 个解决方案

#1


有不同的 回调函数只能访问静态变量, 除非用参数
Windows的消息都是回调函数方式

#2


这是用途,不是区别。回调用途多着呢。
与普通函数的确没内在的区别,或者说,区别就是函数指针的灵活性。

#3


普通函数是由程序员调用的,回调函数是由windows调用的,

#4


窗口函数都是回调函数

#5


http://www.flounder.com/callbacks.htm

#6


回调函数是种常用手段,它其实是你写好的一个函数,并期待别人或者是系统在合适的时候调用它。举个例子,用 API 控制 Modem 拨号,如果拨号函数简单地设计成这样:

bool Dial(...) // 发起拨号,拨通后返回

Modem 不是一拨就通的,你的程序就会在拨号时陷入停滞,无法响应其它任何事件。所以这个函数被设计成这样(只是例子哦,不是说真的有这样的函数,实际的函数你可以去看看 MSDN 中对 RasDial 的描述):

void Dial(DIAL_CALLBACK* pConnected ...)

这里的 pOnConnected 参数就是要你传入一个 CALLBACK 函数指针,从而拨通时系统会自动调用你的这个函数。此时你知道已经拨通了,可以做一些处理。

够明白了吧????


#7


拜托!这种问题问之前搜索一下以前的帖子ok?
怎么这么多人就喜欢在这种概念题上纠缠不清呢??!!
想知道__stdcall、__cdecl、__fastcall、__thiscall、PASCAL等修饰符的区别,就回去好好看看汇编!看看各个函数在编译的时候压栈动作是怎样的!

#8


sorry,犯了一个概念错误:__fastcall没有压栈动作。抱歉。

#9


callback 没有me指针

#1


有不同的 回调函数只能访问静态变量, 除非用参数
Windows的消息都是回调函数方式

#2


这是用途,不是区别。回调用途多着呢。
与普通函数的确没内在的区别,或者说,区别就是函数指针的灵活性。

#3


普通函数是由程序员调用的,回调函数是由windows调用的,

#4


窗口函数都是回调函数

#5


http://www.flounder.com/callbacks.htm

#6


回调函数是种常用手段,它其实是你写好的一个函数,并期待别人或者是系统在合适的时候调用它。举个例子,用 API 控制 Modem 拨号,如果拨号函数简单地设计成这样:

bool Dial(...) // 发起拨号,拨通后返回

Modem 不是一拨就通的,你的程序就会在拨号时陷入停滞,无法响应其它任何事件。所以这个函数被设计成这样(只是例子哦,不是说真的有这样的函数,实际的函数你可以去看看 MSDN 中对 RasDial 的描述):

void Dial(DIAL_CALLBACK* pConnected ...)

这里的 pOnConnected 参数就是要你传入一个 CALLBACK 函数指针,从而拨通时系统会自动调用你的这个函数。此时你知道已经拨通了,可以做一些处理。

够明白了吧????


#7


拜托!这种问题问之前搜索一下以前的帖子ok?
怎么这么多人就喜欢在这种概念题上纠缠不清呢??!!
想知道__stdcall、__cdecl、__fastcall、__thiscall、PASCAL等修饰符的区别,就回去好好看看汇编!看看各个函数在编译的时候压栈动作是怎样的!

#8


sorry,犯了一个概念错误:__fastcall没有压栈动作。抱歉。

#9


callback 没有me指针