LW_OOPC 宏配置及使用指南
金永华
2010/2/15
LW_OOPC 是一套轻量级的面向对象 C 语言编程框架。它是一套 C 语言的宏,总共 1
个.h 文件(如果需要内存泄漏和调试打印支持,需要增加 1 个.c 文件(lw_oopc.c,约 145
行)),20 个宏,约 130 行代码,非常的轻量级,但却很好的支持了很多面向对象的特性,
比如继承、多态,可以优美的实现面向接口编程。
注意,这里特别强调一下,使用 LW_OOPC 的前提是:在 C 语言下。如果您所在的团
队已经在使用 C++,那么 LW_OOPC 对于这种情形是没有价值的。也就是说,LW_OOPC
希望能够帮助到那些懂 OO 的程序员,即便是在用 C 语言编程,依然能够编写出面向对象
的程序。
言归正传,本文将对 LW_OOPC 的配置和使用方法进行讲解,并对这些宏逐个进行细
致讲解。期望本文能给希望在实践中应用 LW_OOPC 的 C 程序员带来帮助。
LW_OOPC 当前版本共有两个文件:lw_oopc.h 和 lw_oopc.c。LW_OOPC 的使用非常简
单,只需要将这两个文件加入工程即可。常规情况下,建议用户同时使用上述两个文件,
因为借助 lw_oopc.c,我们可以监测到内存泄漏,通过打开调试开关,我们能够观察内存分
配和释放的调试打印信息,这将有助于我们除错,减少调试的时间。如果你不需要监测内
存泄漏(譬如准备发布程序),此时,你并不需要 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宏
#define LW_OOPC_USE_STDDEF_OFFSETOF
//#define LW_OOPC_USE_USER_DEFINED_OFFSETOF
// 是否支持内存泄露检测,缺省不支持
//#define LW_OOPC_SUPPORT_MEMORY_LEAK_DETECTOR
从上边的注释,我们可以看出,LW_OOPC 需要使用 offsetof 宏,如果你的开发环境能
够支持 C 标准定义的 offsetof 宏,那么什么都不需要动。如果你的开发环境不能支持 C 标
准定义的 offsetof 宏,那么可以选择使用用户自定义的 lw_oopc_offsetof 宏(如果你的开发
环境连用户自定义的 offsetof 宏都不支持,在这种情形下,LW_OOPC 将无法很好的支持多
态特性,很遗憾,你只能与 LW_OOPC 失之交臂)。
关于LW_OOPC对内存泄露检测以及调试打印的支持,我们将在LW_OOPC高级配置
部分进行详细讲解。
LW_OOPC 宏说明
1) INTERFACE
INTERFACE用于声明接口,譬如:
INTERFACE(IMoveable)
{
void (*move)(IMoveable* t); // Move行为
};