C++ 中的回调函数

Louistao 2011-06-15 10:00:37
C++ 中的回调函数,大侠们说说怎么用法
...全文
391 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
碎碎念 2011-06-16
  • 打赏
  • 举报
回复
回调函数就是系统提供函数模型,但是需要自己编写,并且由系统在某些条件满足时调用...不是由自己调用
wyt218 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 louistao 的回复:]

C/C++ code


//这段代码是什么意思?
#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
#define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR)
#define callfuncN_selector(_SEL……
[/Quote]
在看cocos2d-x ? 这就是回调函数的原型 这里定义为宏 方便使用
qq120848369 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 supermegaboy 的回复:]
引用 10 楼 qq120848369 的回复:
回调的意思就是系统调用....没有别的意思,也不知道谁翻译的"回"字...

你把一个函数告诉系统,系统想用的时候就调用它..这就是回调额..


那宏就是调用个函数,没什么意思.


不是这样的,回调函数这个概念与系统调用没有什么关系,系统调用只是采用了回调函数这种方式而已。

回调函数是对一种比较特别的函数调用方式的统称,……
[/Quote]

你理解错我的意思了,系统调用==系统来调用.
蜥蜴枪王 2011-06-16
  • 打赏
  • 举报
回复
学习,学习...
东莞某某某 2011-06-16
  • 打赏
  • 举报
回复
其实不用这么计较的,你就当作回调是一种调用方法,我们自己可以规定主调和被调,依托函数指针。API中的CALLBACK仅仅是表明这个API函数当作回调使用,实现技术不还是靠函数指针,不要分系统调用什么的了。。。

假如C++写得DLL调用C#主调程序中的一个函数,就需要利用C#委托将该被调函数的指针传给DLL相关指针变量
sallan 2011-06-16
  • 打赏
  • 举报
回复
网上有很多这方面的资料,可以看看。
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 demon__hunter 的回复:]
就是设计模式中的command模式~~
[/Quote]
很明显是观察者模式
飞天御剑流 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qq120848369 的回复:]
回调的意思就是系统调用....没有别的意思,也不知道谁翻译的"回"字...

你把一个函数告诉系统,系统想用的时候就调用它..这就是回调额..


那宏就是调用个函数,没什么意思.
[/Quote]

不是这样的,回调函数这个概念与系统调用没有什么关系,系统调用只是采用了回调函数这种方式而已。

回调函数是对一种比较特别的函数调用方式的统称,在这种方式中,被调函数通过某种方式调用调用者的函数,这个函数就叫回调函数,采用这种方式进行操作的函数都可以叫做回调函数,与系统调用没有关联。回调这个词,对于调用过程的描述是比较贴切的。

有些库函数也使用了回调函数这种方式。
harleypang 2011-06-15
  • 打赏
  • 举报
回复
callback 函数吗?
super_admi 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pathuang68 的回复:]
回调函数通常都是通过函数指针来实现的。原理大致如下:

C/C++ code

#include <iostream>
#include <string>
using namespace std;

// 定义函数指针类型pFun
typedef int (*pFun)(const int&, const int&);

// 具体函数1
int int……
[/Quote]

要说这个……一切都是地址,所以一切都是指针……
super_admi 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qq120848369 的回复:]
回调的意思就是系统调用....没有别的意思,也不知道谁翻译的"回"字...

你把一个函数告诉系统,系统想用的时候就调用它..这就是回调额..


那宏就是调用个函数,没什么意思.
[/Quote]

支持!老外写成了callback,所以back就被翻译成了“回”,扯淡!老外睡不着数"sheep",也就是告诉自己要"sleep",咱中国人也跟着数羊?扯淡!
至善者善之敌 2011-06-15
  • 打赏
  • 举报
回复
自己不调用,等系统调用是,系统回调函数,类似于单片机的中断
pathuang68 2011-06-15
  • 打赏
  • 举报
回复
回调函数通常都是通过函数指针来实现的。原理大致如下:

#include <iostream>
#include <string>
using namespace std;

// 定义函数指针类型pFun
typedef int (*pFun)(const int&, const int&);

// 具体函数1
int intCompare(const int& aInt, const int& bInt)
{
if(aInt == bInt) return 0;
if(aInt > bInt)
{
return 1;
}
else
{
return -1;
}
}

// 具体函数2
int intSum(const int& aInt, const int& bInt)
{
return aInt + bInt;
}

int main(void)
{
int aInt = 1;
int bInt = 2;

// 用函数指针类型pFun声明并初始化一个函数指针pf
pFun pf = intCompare;
// 使用pf
if(pf(aInt, bInt) == 0)
{
cout << "two integers are equal" << "." << endl;
}
else if(pf(aInt, bInt) > 0)
{
cout << aInt << " is greater than " << bInt << "." << endl;
}
else
{
cout << aInt << " is less than " << bInt << "." << endl;
}

// 现在让函数指针pf指向intSum
pf = intSum;
cout << pf(aInt, bInt) << endl;

return 0;
}


上面代码中的intCompare和intSum都可以被认为是回调函数。
qq120848369 2011-06-15
  • 打赏
  • 举报
回复
回调的意思就是系统调用....没有别的意思,也不知道谁翻译的"回"字...

你把一个函数告诉系统,系统想用的时候就调用它..这就是回调额..


那宏就是调用个函数,没什么意思.
Louistao 2011-06-15
  • 打赏
  • 举报
回复


//这段代码是什么意思?
#define schedule_selector(_SELECTOR) (SEL_SCHEDULE)(&_SELECTOR)
#define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR)
#define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR)
#define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR)
#define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR)

#define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR)
#define event_selector(_SELECTOR) (SEL_EventHandler)(&_SELECTOR)
AnYidan 2011-06-15
  • 打赏
  • 举报
回复
关注中
机智的呆呆 2011-06-15
  • 打赏
  • 举报
回复
就是设计模式中的command模式~~
maoxing63570 2011-06-15
  • 打赏
  • 举报
回复
回调的意思就是,你在做一个件事,当一个特定的条件被满足的时侯,会调用那个函数来处理。比如,你有一个非常吝啬的老版,他怕你工作中偷懒,所以要求你一个小时去跟他报告下你的工作情况。于是,你工作一个小时后,你就会去找你的老板报告情况,然后再接着回来做。大概就这个意思
恨天低 2011-06-15
  • 打赏
  • 举报
回复
呵呵,LZ可以自己写个多线程程序,就知道回调函数怎么用了!
  • 打赏
  • 举报
回复
定义函数,传参数,传函数指针...
加载更多回复(4)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧