打印
[AVR单片机]

求助请高手解答编译出错原因

[复制链接]
2063|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
这个报错乱七八糟

使用特权

评论回复
5
ShakaLeo| | 2010-5-10 09:11 | 只看该作者
/和%运算的操作数里有指针类型,编译器不允许。
估计楼主有类似操作:
char a;
char *p;
a = p/10;
如果有,改成如下就行了:
char a;
char *p;
a = (int)p/10;
把/运算中的指针p强制转换成int型。

使用特权

评论回复
6
笑苍天| | 2010-5-10 11:06 | 只看该作者
赞同楼上

使用特权

评论回复
7
yidou| | 2010-5-10 22:57 | 只看该作者
a = (int)p/10;
a不是char型吗?等号右面是int型,那最后这个式子类型是什么?

使用特权

评论回复
8
ershisi| | 2010-5-10 23:04 | 只看该作者
参数类型不对

使用特权

评论回复
9
麻辣鸭脖子| | 2010-5-10 23:14 | 只看该作者
指针的用法我也总是混乱

使用特权

评论回复
10
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型不会出错

使用特权

评论回复
11
xiaohuai|  楼主 | 2010-5-14 23:04 | 只看该作者
讲解很详细,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

218

帖子

1

粉丝