打印
[STM8]

IAR for STM8 编译错误 数组 指针

[复制链接]
3618|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在网上找的 LCD5110的驱动程序    放在KEIL C51里面可以运转    转到IAR FOR STM8里面后编译错误,不知道为啥,请教一下大家有人遇见过这种情况吗?

提示如下:  Error[Pe167]: argument of type "unsigned char const (*)[10]" is incompatible with parameter of type "unsigned char *"

沙发
junyee| | 2014-7-4 19:23 | 只看该作者
试试?
Display5110 (0,1,&wordcode[0][0],14,2,0);

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xm3love + 3
板凳
xm3love|  楼主 | 2014-7-4 19:25 | 只看该作者
junyee 发表于 2014-7-4 19:23
试试?
Display5110 (0,1,&wordcode[0][0],14,2,0);

提示一样的错误

使用特权

评论回复
地板
junyee| | 2014-7-4 19:27 | 只看该作者
本帖最后由 junyee 于 2014-7-4 19:29 编辑

Error[Pe167]: argument of type "unsigned char const (*)[10]" is incompatible with parameter of type "unsigned char *"

原来还有个,,const,改一下5110的函数.

iar 的审查比keil似乎要严格些,我刚从51转STM8(IAR)时也经常犯错.
当然我现在还是新手..

像你这个尝试下改一下函数原形,加上CONST,
但是你后来还对 *WCP自加了,所以函数内部还要小改一下.

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xm3love + 3
5
hithms| | 2014-7-4 21:43 | 只看该作者
本帖最后由 hithms 于 2014-7-4 21:45 编辑

你需要传入的指针是什么类型的?
1. 指针变量wordcode是uchar (*)[10]的,即指向数组第一行,wordcode++是指向下一行;
2. wordcode[]也是一个指针变量,wordcode[0]指向第一行的第一个元素,wordcode[1]指向第二行的第一个元素,wordcode[0]++是指向第一行当前列的下一列的元素;
3. &wordcode也是一个指针变量,它是指向整个二维数组。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xm3love + 3 很给力!
6
xm3love|  楼主 | 2014-7-4 21:59 | 只看该作者
Display5110 (0,1,"wordcode",14,2,0);  //在wordcode 上加一个分号   编译错误解除,但是....但是屏幕还是没显示
uchar code wordcode[][10]= {}  在51里面  数组是这样定义的
我给换成了 const uchar  wordcode[][10]= {}   不知道是不是因为这里,换到IAR   感觉一头雾水呀

使用特权

评论回复
7
xm3love|  楼主 | 2014-7-4 21:59 | 只看该作者
junyee 发表于 2014-7-4 19:27
Error: argument of type "unsigned char const (*)[10]" is incompatible with parameter of type "unsign ...


Display5110 (0,1,"wordcode",14,2,0);  //在wordcode 上加一个分号   编译错误解除,但是....但是屏幕还是没显示
uchar code wordcode[][10]= {}  在51里面  数组是这样定义的
我给换成了 const uchar  wordcode[][10]= {}   不知道是不是因为这里,换到IAR   感觉一头雾水呀

使用特权

评论回复
8
l4157| | 2014-7-5 08:50 | 只看该作者
得用强制类型转换

使用特权

评论回复
9
junyee| | 2014-7-5 13:59 | 只看该作者
uchar *WCP
const uchar wordcode[][10]

在IAR中被认为类型不同.
如果RAM够用,
把const去掉试试.

如果不想去的话,得把5110函数改一下.

---------------------------------
Display5110 (0,1,"wordcode",14,2,0);
这个当然不会显示了啊,
你传入的是"wordcode"这个数组.传递给函数的是这个数组的指针.

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xm3love + 3 很给力!
10
xm3love|  楼主 | 2014-7-6 20:45 | 只看该作者
junyee 发表于 2014-7-5 13:59
uchar *WCP
const uchar wordcode[][10]

嗯嗯  非常感谢:)

使用特权

评论回复
11
xm3love|  楼主 | 2014-7-11 21:15 | 只看该作者
https://bbs.21ic.com/icview-402377-1-1.html    推荐个好贴   给遇到同样问题的朋友看看

使用特权

评论回复
12
fcw| | 2017-5-15 16:57 | 只看该作者
没有看明白,最后怎么解决的。

使用特权

评论回复
13
sky.sun.zz| | 2017-5-15 17:16 | 只看该作者
楼主的wordcode[]数组是常量类型,但在Display5110()函数调用的wordcode数组却是uchar的变量型,当然出错了。

使用特权

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

本版积分规则

12

主题

112

帖子

1

粉丝