失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C++:函数指针 回调函数

C++:函数指针 回调函数

时间:2023-11-12 11:21:40

相关推荐

C++:函数指针 回调函数

#include <iostream>using namespace std;void fun1() {cout << "fun1" << endl;}void fun2() {cout << "fun2" << endl;}void fun3() {cout << "fun3" << endl;}//函数指针数组做形参void trackfun(void (*p[])(), int n) {for (int i = 0; i < n; i++){p[i]();}}int main() {void (*p)();//定义了一个函数指针p,具体就是将原来的函数名加上括号和*号p = fun1;//使用函数名直接对指针赋值p();//调用函数的时候后面加上括号void (*p_array[3])();//定义一个函数指针数组p_array[0] = fun1;//对这个指针数组赋值p_array[1] = fun2;p_array[2] = fun3;//也可以定义指针数组的时候直接初始化//void (*p_array[3])() = { fun1,fun2,fun3 };trackfun(p_array, 3);return 0;}

3月31日:增加一个例子

#include <iostream>#include <opencv2\opencv.hpp>#include <windows.h> using namespace cv;using namespace std;void (*p[5])() = { NULL }; // 创建一个函数指针数组void hook() // 官方封装起来{int i = 0;for (i = 0; i < 5; i++){if (p[i] != NULL){p[i]();//执行函数}}}void register_hook_callback(void (*p_callback)()) // 只是提供一个注册函数{int i = 0;for (i = 0; i < 5; i++){if (p[i] == NULL){p[i] = p_callback;break;//找到函数指针数组中第一个空位,将待注册的函数指针放进去}}}void test01() // 用户自己要添加的注册函数的函数{printf("\ntest01 callback\n");}void test02(){printf("\ntest02 callback\n");}int main(int argc, char* argv[]){register_hook_callback(test01);//这里只是注册登记,就是把传进来的函数指针先保存起来,登记个nameregister_hook_callback(test02);while (1){hook();//这里才是执行所有登记过的函数printf("=====运行========\n");Sleep(1000);}}

如果觉得《C++:函数指针 回调函数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。