云计算百科
云计算领域专业知识百科平台

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

一、常见回调函数案例
//定义回调函数类型
typedef void(*CallbackFunction)(int);

//回调函数实现
void myCallback(int value) {

    std::cout << "my value:" << value << std::endl;
}

//执行回调函数:接受一个回调函数参数
void funcAction(CallbackFunction callback,int value) {
    if (callback != NULL) {
        callback(value);
    }
}

int main() {
    funcAction(myCallback, 10);

    return 0;

}

二、使用指针注册方式实现回调函数
1.回调函数实现C语言的多态
这种方式实现了c语言的多态。面向对象的多态的实现原理是一样的。

//定义回调函数类型
typedef int(*CallbackFunction)(int a,int b);

typedef struct data_t {
    int a;
    int b;
    CallbackFunction callback;//函数管理器
}op_data;

//注册函数
void Register(op_data *data) {
    int reslt = data->callback(data->a, data->b);
    std::cout << "result:" << reslt << std::endl;
}

//加法回调函数
int add(int a,int b) {
    return a + b;
}

//减法回调函数
int sub(int a, int b) {
    return a – b;
}

int main() {
    op_data *mydata = (op_data*)malloc(sizeof(op_data));
    mydata->a = 10;
    mydata->b = 5;

    mydata->callback = add;
    Register(mydata);

    mydata->callback = sub;
    Register(mydata);

    free(mydata);

    return 0;

}

赞(0)
未经允许不得转载:网硕互联帮助中心 » 指针注册方式实现回调函数-c语言使用回调函数实现封装和多态
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!