#define CLASS(a) typedef strcut a a; \
struct a{
#define ENDCLASS(a) a##_FIELDS };
CLASS(Base)
#define Base_FIELDS\
int base_value;\
char *base_ptr
ENDCLASS(Base)
CLASS(Private)
#define Private_FIELDS Base_FIELDS
int private_value;\
char *private_ptr;
ENDCLASS(Private)
// example
int main(void)
{
Private temp;
temp.base_value = 1;
temp.private_value = 2;
return 0;
}
注: Private temp;展开如下:
typedef struct Private Private;
struct Private {
#define Private_FIELDS Base_FIELDS
int private_value;\
char *private_ptr;
Private_FIELDS };
进一步展开如下:
struct Private {
#define Private_FIELDS Base_FIELDS
int private_value;\
char *private_ptr;
int base_value;\
char *base_ptr };
如此,就继承了Base类中的变量信息。
细心的朋友会发现,这种定义方法的关键是两个宏 :
#define Private_FIELDS Base_FIELDS 以及ENDCLASS(a)
本文介绍了一种使用C语言宏定义实现类继承的方法。通过具体的宏定义和示例代码,展示了如何在一个类中继承另一个类的成员变量,为C语言中没有内置类和继承概念的情况下提供一种解决方案。

被折叠的 条评论
为什么被折叠?



