系统程序员成长计划学习-1-通用双链表

如何封装

 

1.在头文件中声明外部需要看到的数据结构,而具体的实现放在.c文件中具体实现。

比如在头文件中:

typedef enum _DListRet
{
    DLIST_RET_ERROR,
    DLIST_RET_OK,
    DLIST_RET_NULL,
    DLIST_RET_PARAMETER
}DListRet;

struct _DList;
typedef struct _DList DList;
enum 类型方便查阅。
而DList类型仅在.h文件中声明,具体定义在.c文件中实现。

2.在头文件中提供操作该数据结构的接口声明。

image

 

3.将外部不需要的函数、而.C文件需要使用的函数的声明和定义都放在.c文件中,并且加上static

image

 

4.禁止使用全局变量(除了单例模式)

5.数据结构中的数据部分要考虑到通用性

此处采用了void*类型

 

6.操作数据结构的接口要考虑通用性

接口的具体功能是由外部需求决定的,而不是随意想象的,具体开发中可以按照测试驱动的方式来编写代码,可以提高效率。

 

7.让C++可以直接调用的方法

在.h文件中如下

#ifdef __cplusplus
extern "C"{
#endif
代码
#ifdef __cplusplus
}
#endif

8.采用函数指针拥抱变化

比如打印void*数据,提供函数指针,具体如何打印由客户端提供。

 

代码下载地址:

http://pan.baidu.com/s/1ntol4KD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值