结构体成员相互交叉

本文介绍了一种菜单UI结构的优化方案,通过不完全声明的方式,将菜单和菜单信息的结构体进行分离,提高了代码的可读性和维护性。具体包括UI_Menu和UI_MenuInfo的定义及其成员变量的详细说明。

使用“不完全声明”
修改后的代码:
struct _menu;
struct _menuinfo;
typedef struct _menu UI_Menu;
typedef struct _menuinfo UI_MenuInfo;
struct _menu
{
UI_ObjectData *uiObject; //此数据用来存放控件列表
uchar ObjCnt; //控件个数 0~255
char *bgName; //背景图片位置的字符串
SURFACE *bg;
void (*pi)(UI_MenuInfo *uspMenu); //到此菜单后,除控件以外的功能,此处重叠
};//UI_Menu;

struct _menuinfo
{
uchar usMenu; //使用菜单的编号
uchar ObjFormer;
uchar ObjNow;
MSG_TYPE msg;
UI_Menu* MenuFormer;//之前使用的菜单
UI_Menu* MenuNow; //现在使用的菜单
};//UI_MenuInfo;

修改前:

typedef struct _menu
{
UI_ObjectData *uiObject; //此数据用来存放控件列表
uchar ObjCnt; //控件个数 0~255
char *bgName; //背景图片位置的字符串
SURFACE *bg;
void (*pi)(UI_MenuInfo *uspMenu); //此处重叠到此菜单后,除控件以外的功能
};UI_Menu;

typedef struct _menuinfo
{
uchar usMenu; //使用菜单的编号
uchar ObjFormer;
uchar ObjNow;
MSG_TYPE msg;
UI_Menu* MenuFormer;//之前使用的菜单
UI_Menu* MenuNow; //现在使用的菜单
};UI_MenuInfo;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值