栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

35.简单的注册函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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放入结构体中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号