利用C语言设计一个结构体时遇到一个设计问题
比如:typedef struct {
char *str;
int begin;
int now;
int end;
(void)(*push)(pack *pck,const char*s2);
(char)(*pop)(pack *pck);
}pack;
然后在init_pack(pack*pck)中将pck.push()绑定到push()上(该函数在pack静态库中定义),pck.pop()绑定到pop()函数上,从而间接的实现类似c++中struct的功能,但是,在使用时比如:
pack a;
init_pack(a);
那么我在像向a中写入数据应该是:
a.push("hello,world");
而不是:
a.push("hello,world",a);
因为C语言中没有*this的概念,又不想显式的将a的地址传给push,那么应该怎么实现
目前觉得用宏实现最可能。
比如:typedef struct {
char *str;
int begin;
int now;
int end;
(void)(*push)(pack *pck,const char*s2);
(char)(*pop)(pack *pck);
}pack;
然后在init_pack(pack*pck)中将pck.push()绑定到push()上(该函数在pack静态库中定义),pck.pop()绑定到pop()函数上,从而间接的实现类似c++中struct的功能,但是,在使用时比如:
pack a;
init_pack(a);
那么我在像向a中写入数据应该是:
a.push("hello,world");
而不是:
a.push("hello,world",a);
因为C语言中没有*this的概念,又不想显式的将a的地址传给push,那么应该怎么实现
目前觉得用宏实现最可能。