typedef运用较多,网上已经有大量的使用举例,这里介绍几个特别的typedef使用,提高coding效率
一、文件内函数根据子功能划分
在一个.c文件中,一般存放的是同一类型的函数的集合,可以利用typedef进一步细分同一个文件中的不同子功能函数。
首先在公共头文件如下定义:
定义BW(也可以为具体模块名等)
#define BW(description) 1
使用示例:
#ifdef BW(" 功能1描述")
fun1_1
fun1_2
...
fun1_n
...
#endif
#ifdef BW(" 功能2描述")
fun2_1
fun2_2
...
fun2_n
...
#endif
在利用source insight编辑代码时,在Symbol Window下查看效果更明显
二、定义函数指针、事件驱动函数表、状态机驱动函数表
为了使得我们编写的代码更加简洁、逻辑更加清晰,熟悉C语言的开发人员常常喜欢使用注册表机制、事件驱动函数表、状态机驱动函数表等,而不是频繁使用if、else if、switch;
1、定义同一类型的函数指针
typedef void (*fun1)(int *, char *)
typedef void (*fun2)(int *, char *)
2、定义事件驱动函数表元素类型
typedef struct eventfuns
{
eventType;
fun1;
fun2;
}EVENT_FUNS
3、定义事件驱动函数表
EVENT_FUNS eventFunTbl[5] = {
{event1, event1_fun1, event1_fun2},
{event2, event2_fun1, event2_fun2},
{event3, event3_fun1, event3_fun2},
{event4, event5_fun1, event4_fun2},
{event5, event6_fun1, event5_fun2},
}
4、处理
只需要根据具体的事件调用对应的处理函数即可
eventFunTbl[eventType].fun1(18, 22);
状态机驱动函数表详见我的另外一篇博文:Coding沙龙之状态机实现