STM32
直播中

杨柳

7年用户 195经验值
私信 关注
[问答]

为什么我在编译过程中出现以下错误和警告?

最近想在iccavr的环境下实现实现一个菜单,菜单的的功能是用结构体指针来实现的,菜单显示使用的是1602  ,其结构体的初始化如下:
struct Menu
{
  uchar MenuItem;
uchar *Caption;
void (*Subs)();
struct Menu *ChildMenu;
struct Menu *ParentMenu;
}
struct Menu ActionMenu[5];
struct Menu StatusMenu[3];
struct Menu SkillMenu[5];
struct Menu BattleMenu[3];
struct Menu MainMenu[3];
可是在我编译过程中出现以下错误和警告,请教高手这个错误原因是什么??????
出现的警告:
!W E:AvrForZhong菜单设计1602.h(41):[warning] old-style function definition for `lcd_init'
出现一个错误如下:
AvrForZhong菜单设计caidan.c(31): invalid use of `struct'

回帖(12)

王浩

2019-7-15 10:37:49
结构体里面包含自身的结构体,可能iccavr不支持.
在mdk里面,测试良好.
struct Menu
{
  u8 MenuItem;
 u8 *Caption;
 void (*Subs)();
 struct Menu *ChildMenu;
 struct Menu *ParentMenu;
};
struct Menu ActionMenu[5]; 
struct Menu StatusMenu[3]; 
struct Menu SkillMenu[5]; 
struct Menu BattleMenu[3]; 
struct Menu MainMenu[3]; 
这段是可以编译通过的.
举报

程春华

2019-7-15 10:44:50
回复【楼主位】jidian071035:
-------------------------------
您好,非常感谢您的解答,AvrForZhong菜单设计caidan.c(31): invalid use of `struct'如果是出现这种情况是否表示的意思就是一般是结构体有问题,还是说这个iccavr是不支持结构体的,因为刚才这段我编译以后仍然出现invalid use of `struct'的报错误
举报

刘建国

2019-7-15 10:52:22
回复【3楼】jidian071035:
-------------------------------
编译器的支持问题.
举报

李宁

2019-7-15 11:01:46
另外求解答,数组问题,AVR+WinAVR开发环境下,数组里面的16进制数据一旦超过977个16进制数据(分了5个二维数组,第一个192数据,第二个160数据,第三个65数据,第四个384数据,第五个176数据,这些数组储存显示屏的点阵数据。)一旦超过这5个数组的数据,调用第一个数据,居然跑最后一个数据显示去了,这是为什么呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分