Coding沙龙之巧用typedef

来源:互联网 发布:网络语开挂是什么意思 编辑:程序博客网 时间:2024/06/05 02:35

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}, 
{event
2, event2_fun1, event2_fun2}, 
{event
3, event3_fun1, event3_fun2}, 
{event
4, event5_fun1, event4_fun2}, 
{event
5, event6_fun1, event5_fun2},  

}

4、处理

    只需要根据具体的事件调用对应的处理函数即可 

     eventFunTbl[eventType].fun1(18,  22);


状态机驱动函数表详见我的另外一篇博文:Coding沙龙之状态机实现 





0 0