35.简单的注册函数

35.简单的注册函数,第1张

35.简单的注册函数

函数指针和指针函数用法和区别_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放入结构体中

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存