标题: C语言结构体赋值问题 [打印本页]

作者: jxcrgt35    时间: 2023-10-4 13:56
标题: C语言结构体赋值问题
typedef struct _MENU_INFO_TYPE
{
        uint8_t *menu_name;
        void (*fn)(void);
}MENU_INFO_TYPE;

typedef struct
{
        uint16_t totle;
        MENU_INFO_TYPE menu_info[2];
}MENU_INFO_TYPE1;

MENU_INFO_TYPE1  xdata new_menu =
{
        2,{"123",fn1},{"456",fn2}
};

提示:main.c(91): error C242: 'struct': too many initializers
请教怎么才能正确赋值?


作者: Hephaestus    时间: 2023-10-4 17:23
写法貌似没有问题,只是编译器不支持,本来C51就不是标准C语言。
作者: XLinliY.Zhang    时间: 2023-10-4 18:38
无法批量赋值的话就一个个单独赋值吧
作者: tyrl800    时间: 2023-10-4 19:16
改成  MENU_INFO_TYPE1  xdata new_menu = {  2,{{"123",fn1},{"456",fn2}} };
作者: chenmingwu    时间: 2023-10-4 19:48
typedef struct {         uint8_t *menu_name;         void (*fn)(void); }MENU_INFO_TYPE;
作者: jxcrgt35    时间: 2023-10-4 21:45
tyrl800 发表于 2023-10-4 19:16
改成  MENU_INFO_TYPE1  xdata new_menu = {  2,{{"123",fn1},{"456",fn2}} };

这样可以的,谢谢分享。请教是什么原因啊?
作者: jxcrgt35    时间: 2023-10-4 21:46
XLinliY.Zhang 发表于 2023-10-4 18:38
无法批量赋值的话就一个个单独赋值吧

谢谢回复。单独赋值是可以的,或通过指针也是可以的
作者: FrankJi    时间: 2023-10-5 09:48
jxcrgt35 发表于 2023-10-4 21:45
这样可以的,谢谢分享。请教是什么原因啊?

代回复:
因为menu_info数组对于MENU_INFO_TYPE1算是1个成员,所以MENU_INFO_TYPE1结构里包含的是2个成员。
作者: jxcrgt35    时间: 2023-10-23 22:45
FrankJi 发表于 2023-10-5 09:48
代回复:
因为menu_info数组对于MENU_INFO_TYPE1算是1个成员,所以MENU_INFO_TYPE1结构里包含的是2个成 ...

谢谢,受教啦




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1