使用“不完全声明”
修改后的代码:
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;