lw_oopc宏配置及使用指南

lw_oopc宏配置及使用指南

ID:15404234

大小:204.00 KB

页数:10页

时间:2018-08-03

lw_oopc宏配置及使用指南_第1页
lw_oopc宏配置及使用指南_第2页
lw_oopc宏配置及使用指南_第3页
lw_oopc宏配置及使用指南_第4页
lw_oopc宏配置及使用指南_第5页
资源描述:

《lw_oopc宏配置及使用指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、LW_OOPC宏配置及使用指南金永华2010/2/15LW_OOPC是一套轻量级的面向对象C语言编程框架。它是一套C语言的宏,总共1个.h文件(如果需要内存泄漏和调试打印支持,需要增加1个.c文件(lw_oopc.c,约145行)),20个宏,约130行代码,非常的轻量级,但却很好的支持了很多面向对象的特性,比如继承、多态,可以优美的实现面向接口编程。注意,这里特别强调一下,使用LW_OOPC的前提是:在C语言下。如果您所在的团队已经在使用C++,那么LW_OOPC对于这种情形是没有价值的。也就是说,LW_OOPC

2、希望能够帮助到那些懂OO的程序员,即便是在用C语言编程,依然能够编写出面向对象的程序。言归正传,本文将对LW_OOPC的配置和使用方法进行讲解,并对这些宏逐个进行细致讲解。期望本文能给希望在实践中应用LW_OOPC的C程序员带来帮助。LW_OOPC当前版本共有两个文件:lw_oopc.h和lw_oopc.c。LW_OOPC的使用非常简单,只需要将这两个文件加入工程即可。常规情况下,建议用户同时使用上述两个文件,因为借助lw_oopc.c,我们可以监测到内存泄漏,通过打开调试开关,我们能够观察内存分配和释放的调试打印

3、信息,这将有助于我们除错,减少调试的时间。如果你不需要监测内存泄漏(譬如准备发布程序),此时,你并不需要lw_oopc.c,而只需要lw_oopc.h即可。LW_OOPC配置在lw_oopc.h中,有这么几行代码://配置宏(两种配置选其一)://LW_OOPC_USE_STDDEF_OFFSETOF表示使用C标准定义的offsetof//LW_OOPC_USE_USER_DEFINED_OFFSETOF表示使用用户自定义的lw_oopc_offsetof宏#defineLW_OOPC_USE_STDDEF_OFF

4、SETOF//#defineLW_OOPC_USE_USER_DEFINED_OFFSETOF//是否支持内存泄露检测,缺省不支持//#defineLW_OOPC_SUPPORT_MEMORY_LEAK_DETECTOR从上边的注释,我们可以看出,LW_OOPC需要使用offsetof宏,如果你的开发环境能够支持C标准定义的offsetof宏,那么什么都不需要动。如果你的开发环境不能支持C标准定义的offsetof宏,那么可以选择使用用户自定义的lw_oopc_offsetof宏(如果你的开发环境连用户自定义的of

5、fsetof宏都不支持,在这种情形下,LW_OOPC将无法很好的支持多态特性,很遗憾,你只能与LW_OOPC失之交臂)。关于LW_OOPC对内存泄露检测以及调试打印的支持,我们将在LW_OOPC高级配置部分进行详细讲解。LW_OOPC宏说明1)INTERFACEINTERFACE用于声明接口,譬如:INTERFACE(IMoveable){void(*move)(IMoveable*t);//Move行为};在LW_OOPC中,声明接口、抽象类和具体类的方法成员比较特殊,均是函数指针类型的成员。事实上,LW_OOP

6、C正是借助了函数指针的特性,完成了多态功能的模拟。1)ABS_CLASSABS_CLASS用于声明抽象类,譬如:ABS_CLASS(Animal){charname[128];//动物的昵称(假设小于128个字符)intage;//动物的年龄void(*setName)(Animal*t,constchar*name);//设置动物的昵称void(*setAge)(Animal*t,intage);//设置动物的年龄void(*sayHello)(Animal*t);//动物打招呼void(*eat)(Animal

7、*t);//动物都会吃(抽象方法,由子类实现)void(*breathe)(Animal*t);//动物都会呼吸(抽象方法,由子类实现)void(*init)(Animal*t,constchar*name,intage);//初始化昵称和年龄};2)CLASSCLASS用于声明具体类,譬如:CLASS(Fish){EXTENDS(Animal);//继承Animal抽象类IMPLEMENTS(IMoveable);//实现IMoveable接口void(*init)(Fish*t,constchar*name,i

8、ntage);//初始化昵称和年龄};在该例中,我们声明了Fish类,并让该类继承Animal抽象类,并且实现IMoveable接口。3)EXTENDS和IMPLEMENTS在介绍CLASS宏的时候,我们在代码中看到有两个宏:EXTENDS和IMPLEMENTS,如果你查看lw_oopc.h的源码,你将会发现他们是一模一样的:#defineIMPLEMENT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。