c语言结构体初始化函数指针数组成员报错问题请求各位能帮忙看看,代码和编译报错点如下
typedef struct people
{
char name[20];
void (*eatm)(void);//吃的方法
void (*dosomething[4])(void);//4个指针方法数组
}MAN;
MAN *currentMan = NULL;//当前的菜单 指针变量currentMan
void eat(void){
printf("%s","吃~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
void drink(void){
printf("%s","喝水");
}
void sleeps(void){
printf("%s","睡觉");
}
void coding(void){
printf("%s","写代码");
}
MAN pman2 = {
.name = "20",
.eatm = eat,
{
.dosomething[0] = eat, //报错
.dosomething[1] = drink, //报错
.dosomething[2] = sleeps, //报错
.dosomething[3] = coding, //报错
},
};
.dosomething[0] = eat,此处编译不通过,报错如下
person.c:44:9: 错误:字段名不在记录或联合初始值设定中
.dosomething[0] = &eat,
^
person.c:44:9: 错误:(在‘pman2.dosomething’的初始化附近)
person.c:45:9: 错误:字段名不在记录或联合初始值设定中
.dosomething[1] = drink,
^
person.c:45:9: 错误:(在‘pman2.dosomething’的初始化附近)
person.c:46:9: 错误:字段名不在记录或联合初始值设定中
.dosomething[2] = sleeps,
^
person.c:46:9: 错误:(在‘pman2.dosomething’的初始化附近)
person.c:47:9: 错误:字段名不在记录或联合初始值设定中
.dosomething[3] = coding,
^
person.c:47:9: 错误:(在‘pman2.dosomething’的初始化附近)
person.c: 在函数‘manDo’中:
person.c:66:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}