c++ 回调函数

Reference to: 

http://blog.csdn.net/kkk0526/article/details/17122081

回调函数

(1)概念:回调函数,顾名思义,就是使用者自己定义一个函数,使用者自己实现这个函数的程序内容,然后把这个函数作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是所谓的回调函数。简单来说,就是由别人的函数运行期间来回调你实现的函数。

//定义带参回调函数
void PrintfTextCallback(char* s)
{
  printf(s);
}

//定义实现带参回调函数的"调用函数"
void CallPrintfText(void(*callfuct)(char*), char* s)
{
  callfuct(s);
}

TEST(training, check2)
{
  CallPrintfText(PrintfTextCallback, "Hello World!\n");
}

 

1) 回掉函数就是函数指针的一种,只有先了解函数指针才能更透彻理解回调

2) 除了了解指针函数 还有一下几个不太懂的关键字也需要了解。

 

A.

typedef 的主要应用形式

typedef 的主要应用有如下的几种形式:

1) 为基本数据类型定义新的类型名。

2) 为自定义数据类型(结构体、公用体和枚举类型)定义简洁的类型名称。

3) 为数组定义简洁的类型名称。

4) 为指针定义简洁的名称。

//可以为函数指针定义新的名称,例如
typedef  int (*MyFUN)(int a,intb);
//其中MyFUN代表指向函数的指针类型的新名称。例如
typedef int (*MyFUN)(int a,intb);
int Max(int a,int b);
MyFUN pMyFun;// 此处原文是MyFUN *pMyFun,编译有误,因为MyFUN类型本身就是指针类型。
pMyFun= Max;

Refer to: 

http://www.cnblogs.com/seventhsaint/archive/2012/11/18/2805660.html

B.

__stdcall:参数从右向左依次传递,并压入堆栈,由被调用函数清退堆栈。该规范生成的函数代码比__cdecl更小,但当函数有可变个数参数,自动转化为__cdecl调用规范。

__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。

 

猜你喜欢

转载自shary-1986.iteye.com/blog/2373213