C语言接口与实现实例
2014-06-25 15:02
225 查看
一个模块有两部分组成:接口和实现。接口指明模块要做什么,它声明了使用该模块的代码可用的标识符、类型和例程,实现指明模块是如何完成其接口声明的目标的,一个给定的模块通常只有一个接口,但是可能会有许多种实现能够提供接口所指定的功能。每个实现可能使用不同的算法和数据结构,但是它们都必须符合接口所给出的使用说明。客户调用程序是使用某个模块的一段代码,客户调用程序导入接口,而实现导出接口。由于多个客户调用程序是共享接口和实现的,因此使用实现的目标代码避免了不必要的代码重复,同时也有助于避免错误,因为接口和实现只需一次编写和调试就可多次使用。
欢迎关注我的个人博客:www.wuyudong.com, 更多精彩文章与您分享
C语言对接口和实现的分离只提供最基本的支持,但是简单的约定能给接口/实现方法论带来巨大的好处。在C中,接口在头文件声明,头文件声明了客户调用程序可以使用的宏、类型、数据结构、变量以及例程。用户使用C语言的预处理指令#include导入接口。
下面的例子说明了本篇文章的接口中所使用的一些约定、接口:
stack.c
欢迎关注我的个人博客:www.wuyudong.com, 更多精彩文章与您分享
接口
接口只需要指明客户调用程序可能使用的标识符即可,应尽可能地隐藏一些无关的表示细节和算法,这样客户调用程序可以不必依赖于特定的实现细节。这种客户调用程序和实现之间的依赖--耦合----可能会在实现改变时引起错误,当这种依赖性埋藏在一些关于实现隐藏的或是不明确的假设中时,这些错误可能很难修复,因此一个设计良好且描述精确的接口应该尽量减少耦合。C语言对接口和实现的分离只提供最基本的支持,但是简单的约定能给接口/实现方法论带来巨大的好处。在C中,接口在头文件声明,头文件声明了客户调用程序可以使用的宏、类型、数据结构、变量以及例程。用户使用C语言的预处理指令#include导入接口。
下面的例子说明了本篇文章的接口中所使用的一些约定、接口:
#include <stddef.h> #include "assert.h" #include "mem.h" #include "stack.h" #define T Stack_T struct T { int count; struct elem { void *x; struct elem *link; } *head; }; T Stack_new(void) { T stk; NEW(stk); stk->count = 0; stk->head = NULL; return stk; } int Stack_empty(T stk) { assert(stk); return stk->count == 0; } void Stack_push(T stk, void *x) { struct elem *t; assert(stk); NEW(t); t->x = x; t->link = stk->head; stk->head = t; stk->count++; } void *Stack_pop(T stk) { void *x; struct elem *t; assert(stk); assert(stk->count > 0); t = stk->head; stk->head = t->link; stk->count--; x = t->x; FREE(t); return x; } void Stack_free(T *stk) { struct elem *t, *u; assert(stk && *stk); for (t = (*stk)->head; t; t = u) { u = t->link; FREE(t); } FREE(*stk); }
stack.c
参考资料
《C语言接口与实现--创建可重用软件的技术》相关文章推荐
- C语言接口与实现实例
- c语言接口与实现--内存管理章节理解,含实例
- C语言接口与实现方法实例详解
- c语言接口与实现--异常与断言(异常部分)的理解,含实例
- c语言接口与实现--表,含原文实例
- c语言接口与实现--再论内存管理含实例
- HTTP协议的C语言编程实现实例
- C语言接口与实现-创建可重用软件的技术(笔记12)
- [ZT]HTTP协议的C语言编程实现实例
- 用C语言实现的定时器库---接口。
- [转]用c语言实现的daemon实例
- COM 接口得到实现该接口的对象实例
- C语言接口与实现-创建可重用软件的技术 (笔记10)
- SP 短信开发-PROVISION接口实现-正向订购实例代码
- 简单工厂(Factory)-提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。
- C#实现接口的实例解析
- Ubuntu下c语言实现并发服务器简单socket编程实例
- HTTP协议的C语言编程实现实例
- SP 短信开发-PROVISION接口实现-正向订购实例代码
- C语言实现CRC算法实例改进