[AVR单片机] 求助请高手解答编译出错原因

[复制链接]
 楼主| xiaohuai 发表于 2010-5-7 23:06 | 显示全部楼层 |阅读模式
C:\icc\bin\imakew -f 电子钟.mak
  iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega16 -l -g -Mavr_enhanced F:\单片机\AVR单~1\ATmega16学习资料\05电子~1\电子钟.c
!E F:\单片机\AVR单~1\ATmega16学习资料\05电子~1\电子钟.c(52): operands of / have illegal types `pointer to unsigned char' and `int'
!E F:\单片机\AVR单~1\ATmega16学习资料\05电子~1\电子钟.c(53): operands of % have illegal types `pointer to unsigned char' and `int'
C:\icc\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1
epsmc 发表于 2010-5-8 16:38 | 显示全部楼层
have illegal types `pointer to unsigned char' and `int'
非法的char 、int类型指针
Karlshen 发表于 2010-5-9 08:56 | 显示全部楼层
还是把文件名字取成拼音的保险
yidou 发表于 2010-5-9 22:55 | 显示全部楼层
这个报错乱七八糟
ShakaLeo 发表于 2010-5-10 09:11 | 显示全部楼层
/和%运算的操作数里有指针类型,编译器不允许。
估计楼主有类似操作:
char a;
char *p;
a = p/10;
如果有,改成如下就行了:
char a;
char *p;
a = (int)p/10;
把/运算中的指针p强制转换成int型。
笑苍天 发表于 2010-5-10 11:06 | 显示全部楼层
赞同楼上
yidou 发表于 2010-5-10 22:57 | 显示全部楼层
a = (int)p/10;
a不是char型吗?等号右面是int型,那最后这个式子类型是什么?
ershisi 发表于 2010-5-10 23:04 | 显示全部楼层
参数类型不对
麻辣鸭脖子 发表于 2010-5-10 23:14 | 显示全部楼层
指针的用法我也总是混乱
ShakaLeo 发表于 2010-5-11 09:00 | 显示全部楼层
a = (int)p/10;
a不是char型吗?等号右面是int型,那最后这个式子类型是什么?
yidou 发表于 2010-5-10 22:57

把int型数据赋值给char型,是把int型的低8位给char型
如果把a定义成int型就不用这么罗嗦的解释了,但楼主用的mega16,只有1K的ram,也就是说p的值不能超过1120,那么除以10之后的值不会超过112,所以把a定义成char型不会出错
 楼主| xiaohuai 发表于 2010-5-14 23:04 | 显示全部楼层
讲解很详细,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

218

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部