修改了网上一个人的代码,加入了一些宏定义.QINTERFACE这个方式是BREW的实现方式,在这里定义了
数据类型和虚表指针.这也是沿用了C++虚函数的思想.
#include <stdlib.h>
#define VTBL(iname) iname##Vtbl
#define QINTERFACE(iname) /
struct iname {/
struct VTBL(iname) *pvtbl;/
int nref;/
};/
typedef struct VTBL(iname) VTBL(iname);/
struct VTBL(iname)
#define IBase(iname) /
void (*AddRef) (iname*);/
void (*Release) (iname*)
#define ISampleBase(iname) /
IBase(iname); /
void (* show)()
QINTERFACE(SampleBase) {
ISampleBase(SampleBase);
};
//宏定义,方便使用
#define SampleBaseAddRef(p) (*(VTBL(SampleBase) **)p)->AddRef(p)
#define SampleBaseRelease(p) (*(VTBL(SampleBase) **)p)->Release(p)
#define SampleBaseShow(p) (*(VTBL(SampleBase) **)p)->show()
void SampleBase_AddRef(Sampl