今天把libevent大概看了一下,发现里面回调函数用的很多,特别是用在异步处理事件中,关于回调函数其实是通过函数指针来实现的,下面是我用回掉函数写的一个两个数的加减乘除的例子,这个例子能很好的说明回调函数的使用,以及使用回调函数的好处:
#include<stdio.h>
#include<stdlib.h>
// 运算结构体
struct count{
int num1;
int num2;
int (*method)(int a, int b); //函数指针
};
int addcb(int a, int b){
return a+b;
}
int subcb(int a, int b){
return a-b;
}
int mulcb(int a, int b){
return a*b;
}
int divcb(int a, int b){
if(b != 0){
return a/b;
}
return 0;
}
int main(){
int result = 0;
struct count mycount;
mycount.num1 = 12;
mycount.num2 = 4;
printf("hello callback num1=%d, num2=%d!\n", mycount.num1, mycount.num2);
// 回调函数指针赋值 add
mycount.method = addcb;
result = mycount.method(mycount.num1, mycount.num2);
printf("callback->add:%d\n", result);
// 回调函数指针赋值 sub
mycount.method = subcb;
result = mycount.method(mycount.num1, mycount.num2);
printf("callback->sub:%d\n", result);
// 回调函数指针赋值 mul
mycount.method = mulcb;
result = mycount.method(mycount.num1, mycount.num2);
printf("callback->mul:%d\n", result);
// 回调函数指针赋值 div
mycount.method = divcb;
result = mycount.method(mycount.num1, mycount.num2);
printf("callback->div:%d\n", result);
return 0;
}