怎么在C语言中应用结构体实现c++类的思想
在结构体里定义一个函数成员,这样就可以运用类似c++类的成员函数
#include <stdio.h>
struct alink_stu
{
void (*pfuc)();
};
void iface_provcode_setvalue()
{
printf("iface_provCode_setvalue\n");
}
void iface_hwVer_setvalue()
{
printf("iface_hwVer_setvalue\n");
}
struct alink_stu init_alink[]=
{
{.pfuc=iface_provcode_setvalue},
{.pfuc=iface_hwVer_setvalue}
};
int main(int argc , char const *argv[])
{
int count = sizeof(init_alink)/sizeof(struct alink_stu);
for(int i=0; i<count; i++)
{
init_alink[i].pfuc();
}
return 0;
}
运行结果:
稍微加上枚举成员判断函数类型:
#include <stdio.h>
enum type_num
{
one=1,
two
};
struct alink_stu
{
union
{
char *(*pone)();
int (*ptwo)();
}pfuc;
enum type_num etype;
};
char *iface_provcode_setvalue()
{
printf("iface_provCode_setvalue\n");
return NULL;
}
int iface_hwVer_setvalue()
{
printf("iface_hwVer_setvalue\n");
return 0;
}
struct alink_stu init_alink[]=
{
{.pfuc.pone=iface_provcode_setvalue, .etype=one},
{.pfuc.ptwo=iface_hwVer_setvalue, .etype=two}
};
int main(int argc , char const *argv[])
{
int count = sizeof(init_alink)/sizeof(struct alink_stu);
for(int i=0; i<count; i++)
{
if(init_alink[i].etype==one)
{
init_alink[i].pfuc.pone();
printf("[type]:one\n");
}
else if(init_alink[i].etype==two)
{
init_alink[i].pfuc.ptwo(