php购物网站开发设计,期货融网站建设,最流行的做网站语言,哪家小吃培训网站做的最好简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 人生格言#xff1a; 人生… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的理解C之回调函数使用与不使用using、typedef、function定义用法总结。 2.回调函数介绍 1.回调函数是一种在编程中常用的设计模式它是一种将函数作为参数传递给另一个函数的技术。这种方式允许我们在一个函数内部调用另一个函数而这个被调用的函数是作为参数传递进来的。 2.回调函数的主要用途是实现事件驱动编程和异步编程。在事件驱动编程中当某个事件如用户点击、网络请求完成等发生时会调用预先定义的回调函数来处理这个事件。在异步编程中当某个耗时操作如网络请求、文件读写等完成时会调用预先定义的回调函数来处理操作结果。 3.回调函数的使用场景包括 事件处理回调函数可以用于处理各种事件例如鼠标点击、键盘输入、网络请求等。 异步操作回调函数可以用于异步操作例如读取文件、发送邮件、下载文件等。 数据处理回调函数可以用于处理数据例如对数组进行排序、过滤、映射等。 插件开发回调函数可以用于开发插件 4.我们先来看看回调的英文定义
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。 字面上的理解回调函数就是一个参数将这个函数作为参数传到另一个函数里面当那个函数执行完之后再执行传进去的这个函数。这个过程就叫做回调。
回调回调就是回头调用的意思。主函数的事先干完回头再调用传进来的那个函数。简单回调函数例子
#include iostream// 定义一个回调函数
void myCallback(int x) {std::cout Called back with value x std::endl;
}// 定义一个接受回调函数作为参数的函数
void testCallback(void (*callback)(int)) {std::cout Running testCallback... std::endl;callback(42); // 在函数内部调用回调函数
}int main() {testCallback(myCallback); // 将回调函数作为参数传递给另一个函数return 0;
}3.代码实例
1.不使用任何关键字定义回调函数
在不使用任何方法的情况下回调函数可以直接通过函数指针来定义和使用.
#include iostreamvoid test(int a){printf(xxx----------%s(), line %d, a %d\n,__FUNCTION__,__LINE__,a);
}int main(){//定义函数指针并赋值为回调函数void (*Callback)(int) test;// 调用回调函数(Callback)(100);
}
2.使用typedef关键字定义回调函数
使用typedef可以为回调函数类型创建一个别名提高代码的可读性.
#include iostreamvoid test(int a){printf(xxx----------%s(), line %d, a %d\n,__FUNCTION__,__LINE__,a);
}// 定义回调函数类型的别名类型为CallbackType
typedef void (*CallbackType)(int); int main(){// 使用别名定义函数指针并赋值为回调函数CallbackType Callback test; // 调用回调函数(Callback)(100);
}
3.使用using关键字定义回调函数
使用using关键字可以在C11及更高版本中为回调函数类型创建别名.
#include iostreamvoid test(int a){printf(xxx----------%s(), line %d, a %d\n,__FUNCTION__,__LINE__,a);
}// 定义回调函数类型的别名类型为CallbackType
using CallbackType void (*)(int);int main(){// 使用别名定义函数指针并赋值为回调函数CallbackType Callback test;// 调用回调函数(Callback)(100);
}
4.使用std::function关键字定义回调函数
使用std::function可以更灵活地定义回调函数不仅可以接受函数指针还可以接受函数对象、lambda表达式等。
#include iostream
#include functional
void test(int a){printf(xxx----------%s(), line %d, a %d\n,__FUNCTION__,__LINE__,a);
}int main(){//使用std::function定义回调函数//v1.0: 未使用typedef和using关键字定义std::functionvoid(int) Callback test;(Callback)(100);//v2.0 :typedeftypedef std::functionvoid(int) Callback1;Callback1 c1 test;c1(200);//v3.0using Callback2 std::functionvoid(int);Callback2 c2 test;c2(300);
}