函数指针应用总结(未完成)
来源:互联网 发布:楼凤阁 源码 编辑:程序博客网 时间:2024/06/16 18:55
3.回调函数中,这是内核中用的最多的,希望认真对待下面几个示例,最好都上机跑一下!!
void RegisterKeyEventCB(void EventCB(* KeyEvent_t));
{
if(EventCB)
KeyEventCB = EventCB;
}
示例1:
#include<stdio.h>typedef void (*pcb)(char*);void GetCallBack(pcb callback){printf("GetCallBack\n");callback("csj");}void fCallback(char *s){printf("fCallback:%s\n",s);}void main(){GetCallBack(fCallback);}
示例2:
#include<stdio.h>typedef void (*put)(char *);void getput(put p_name,char *name){printf("getput\n");p_name(name);}void myname(char* s){printf("my name is %s\n",s);}void main(){getput(myname,"csj");}
示例3:
#include<stdio.h>typedef void (*put)(char *);void getput(put p_name,put p_age,char *name,unsigned char age){printf("getput\n");p_name(name);p_age(age);}void myage(unsigned char age){printf("my age is %d\n",age);}void myname(char* s){printf("my name is %s\n",s);}void main(){getput(myname,myage,"csj",22);}
示例4:
1.结构体中
/* 数据结构 */typedef struct _Protocal_Callbacks{ BOOL (*pPackage_Check)(u8 *pdata, u16 len); /* 数据包地址域、接口类型、校验确认 */ BOOL (*pSet_Addr)(u8 addr); /* 设置设备地址 */ BOOL (*pSet_BPS)(u8 bps); /* 设置波特率 */ BOOL (*pSet_Dot_Group)(u8 *pdata, u8 len); /* 测温点分组配置 */ BOOL (*pSet_Time)(u8 *pdata, u8 len); /* 设置时间 */ BOOL (*pSet_OverTem)(u8 group, s16 tem); /* 设置过温阈值 */ BOOL (*pSet_Font)(u8 group, u8 dot, u8 num, u8 *pdata, u8 len); /* 设置字模 */ BOOL (*pSet_Tem_Y)(s16 tem); /* 设置Y轴标度 */ BOOL (*pRead_Addr)(void); /* 读地址 */ BOOL (*pRead_BPS)(void); /* 读波特率 */ BOOL (*pRead_Dot_Group)(void); /* 读分组信息 */ BOOL (*pRead_OverTem)(void); /* 读过温阈值 */ BOOL (*pRead_Version)(void); /* 读软件版本 */ BOOL (*pSet_433M_Frq)(u8 frq); /* 设置433M频点 */ BOOL (*pSet_Pan_ID)(u16 panid); /* 设置PanID */ BOOL (*pRestart_System)(void); /* 重启设备 */ BOOL (*pSet_IP_Imf)(u8 *pdata, u8 len); /* 设置IP信息 */ BOOL (*pEnd)(void); /* 触发包发送 */ void (*pNULL_Fun)(u8 code); /* 不支持此选项码 */ void (*pData_Err)(void); /* 造成溢出的错误 */}CB_Typdef;
2.数组中
const void (* handle[200])(void) =
{
fun0,
fun1,
...
fun199
}
实例:
#include<stdio.h>void foo1(void){printf("i am foo1\n");}void foo2(void){printf("i am foo2\n");}void foo3(void){printf("i am foo3\n");}void main(){int i = 0;const void (*headle[200])(void)={foo1,foo2,foo3};for(i=0;i<3;i++)headle[i]();}
0 0
- 函数指针应用总结(未完成)
- 理解C++成员函数指针--草稿未完成
- 函数指针与函数指针数组应用总结
- redis学习总结(未完成)
- 内联函数详解(未完成)
- 指针学习总结(函数指针,指针型函数)
- php学习笔记--php常用函数及其应用(未完成)
- 关于ListView的一点总结(未完成)
- 自己总结的Dijkstra算法(未完成)
- (未完成)LeetCode 链表总结
- 智能指针总结及应用(一)
- 智能指针总结及应用(二)
- 函数指针的应用(转)
- 简单的函数指针应用(linux)
- 函数指针及应用
- 函数指针的应用
- 函数指针及其应用
- 函数指针的应用
- 最近项目用到Dubbo框架,临时抱佛脚分享一下共探讨。
- android动画效果的基础设置
- mysql和oracle对于内连接和左右连接的使用(一)
- 选夫婿1
- #GWT#之TextBox注册onPaste事件
- 函数指针应用总结(未完成)
- NEFU 1191 BFS
- 51nod--1183 编辑距离
- (二)OpenGL中的Shader
- [转]Spring事务管理(详解+实例)
- 高斯消元异或版模板
- OkHttp与Retrofit上传文件详解
- 教你如何使用IDEA新建WEB工程
- 中后求前