回调函数的定义与使用一例
2011-11-02 23:46
148 查看
回调函数就是一个通过函数指针调用的函数。
首先要了解函数指针的定义。
typedef void (*FuncType)(int, int); // 定义FuncType是一个函数指针类型
FuncType aaa = f2; // 定义aaa是一个FuncType类型的指针, 指向函数f2
aaa(1, 2); //该句相当于调用f2(1, 2);
下面是回调函数的定义与使用的一个例子(注意在函数指针作为参数时的定义方式)。
---superzhao
首先要了解函数指针的定义。
typedef void (*FuncType)(int, int); // 定义FuncType是一个函数指针类型
FuncType aaa = f2; // 定义aaa是一个FuncType类型的指针, 指向函数f2
aaa(1, 2); //该句相当于调用f2(1, 2);
下面是回调函数的定义与使用的一个例子(注意在函数指针作为参数时的定义方式)。
#include <iostream> #include <stdio.h> #include <stdarg.h> using namespace std; #ifndef __MYCALLBACK #define __MYCALLBACK #endif // 这是回调函数f2 __MYCALLBACK void f2(int a, int b) { cout << "a + b" << " = " << a + b << endl; } // 这是回调函数f3 __MYCALLBACK void f3(int a, int b, int c) { cout << "a + b + c" << " = " << a + b + c << endl; } // 在该函数中调用回调函数, 函数参数的声明与使用 // 输入:回调函数cbFunc1, 回调函数cbFunc2, 至少1个整型参数 // 当整型参数(应以-1结尾)个数 == 3时调用cbFunc1, == 4时调用cbFunc2 void TestCallBack(void (*cbFunc1)(int, int), void (*cbFunc2)(int, int, int), int x1, ...) { int a = 0, b = 0, c = 0, i = x1, cnt = 0; va_list marker; va_start(marker, x1); while (i != -1) { switch(++cnt) { case 1: a = i; break; case 2: b = i; break; case 3: c = i; break; default: break; } i = va_arg(marker, int); } va_end(marker); if (cnt == 2) (*cbFunc1)(a, b); else if (cnt == 3) (*cbFunc2)(a, b, c); } int main(int argc, char *argv[]) { TestCallBack(f2, f3, 100, 20, -1); TestCallBack(f2, f3, 3, 6, 9, -1); return 0; }
---superzhao
相关文章推荐
- c 函数指针的定义 和 C++回调函数的使用
- java内部类的作用(三)----定义使用回调函数的时候比较便捷---匿名内部类(anonymous)
- 函数指针,回调函数的定义和使用
- 回调函数的定义和使用
- c 函数指针的定义 和 C++回调函数的使用
- 定义回调函数并使用的方法
- 使用一个定时器和回调函数防止代码阻塞
- 类模板的定义和使用 http://blog.csdn.net/djinglan/article/details/6689839
- hdu3118Arbiter (使用二分图的定义,枚举每个状态)
- Swift中if与switch语句使用一例
- 函数指针与函数指针数组的定义与使用
- IOS学习之ios全局变量定义和使用
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- 结构体定义使用及指针长度问题
- 全局变量的定义以及函数内怎么使用局部变量和全局变量?
- 单链表的定义以及使用
- c++,模板函数的定义和使用【初探】
- 使用XCA(X Certificate and key management)可视化项目经理SSL 凭证(4)--凭借自身的凭证管理中心的定义(Certificate Authority)签名证书申请
- BH16-Django-定义和使用模型
- JAVA数组的定义以及使用1