函数指针和指针函数用法和区别_luoyayun361的专栏-CSDN博客_指针函数
typedef介绍_liitdar的博客-CSDN博客_typedef
写驱动老是分配设置注册结构体,自己写一个功能最简单的注册函数,能体现基本功能就好。通过统一的注册函数和调用函数,屏蔽掉不同的处理函数细节
第一步:在全局变量中定义一个函数指针数组
typedef void(*q_func)(int); q_func q_array[32];
第二步:使用函数指针数组定义注册函数
void register_q(int q, q_func fp) { q_array[q] = fp; }
第三步:注册函数
假设有以下函数 void fun_A(void) { ………… } void fun_B(int x) { ………… } 使用注册函数注册,注册号不能大于数组最大值,而且不能重复 register_q(0, fun_A); register_q(10, fun_B);
第四步:根据使用数组号调用注册好的不同处理函数
void handle_q_func(int bit,int y) { q_array[bit](y); } 如: main() { …………………… handle_q_func(0,2); //调用fun_A handle_q_func(10,14);//调用fun_B …………………… }
跟字符设备的使用对比,q类似于主设备号,fun类似于file_operatioons结构体。该示例只是用了函数指针,使用结构体指针,会更加灵活,比如把形参y放入结构体中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)