打印
[开发工具]

IAR FOR ARM 7.10编译错误[Pe028]

[复制链接]
2551|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题: 我在使用IAR FOR ARM 7.10编译 stm32f407工程时出现一下错误
Error[Pe028]: expression must have a constant value

1.错误指向IAR工程代码见下图
{  10,  10,  5, (GUI_CONST_STORAGE unsigned char *)(flash_start_address[0]) }

2.经过测试将u32 flash_start_address[19] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}中的19个元素改成{  10,  10,  5, (GUI_CONST_STORAGE unsigned char *)(0x1000) };编译及可以通过。

3.上诉类似代码在Keil中编译可以通过。

向各位大神求解:
因为我的变量flash_start_address[19]需要在其他地方计算出值,所以无法一开始就给定固定值。然后作为该处指针的地址传值进去。
问: 网上查资料说IAR编译审核比Keil严谨,我想知道怎么修改该错误【Pe028】,或者说如何配置IAR编译器使它忽略此处错误。

非常感谢大家!

QQ图片20150925202520.png (19.26 KB )

QQ图片20150925202520.png
沙发
稳稳の幸福| | 2015-9-26 10:41 | 只看该作者
因为那个后面是个地址不是数组元素,所以你取地址符也是可以。

使用特权

评论回复
板凳
index219|  楼主 | 2015-9-26 11:22 | 只看该作者
稳稳の幸福 发表于 2015-9-26 10:41
因为那个后面是个地址不是数组元素,所以你取地址符也是可以。

谢谢你的回复,但如果是取地址的话,那结果就成取的是变量的地址了,而不是变量值了。我是想用变量值作为使用的地址,而不是变量地址作为使用的地址。 还有什么办法么?奇怪的是在KEIL中类似的操作KEIL编译器不会报错

使用特权

评论回复
地板
feiguangliuyue| | 2015-9-26 11:33 | 只看该作者
可以试一试把强制类型转换放在其它中语句进行.

使用特权

评论回复
5
index219|  楼主 | 2015-9-26 13:28 | 只看该作者
feiguangliuyue 发表于 2015-9-26 11:33
可以试一试把强制类型转换放在其它中语句进行.

试过了,只要 (GUI_CONST_STORAGE unsigned char *)(flash_start_address[0])中的flash_start_address[0]不是一个常量(像0x1000)的话,在其它地方都会提示同样的错误。焦急求搞定啊。

使用特权

评论回复
6
feiguangliuyue| | 2015-9-26 14:59 | 只看该作者
index219 发表于 2015-9-26 13:28
试过了,只要 (GUI_CONST_STORAGE unsigned char *)(flash_start_address[0])中的flash_start_address[0] ...

你的这个数组实在初始声明里初始化的么?在创建数组的时候不能赋值一个变化的值.

使用特权

评论回复
7
迪卡| | 2015-9-26 17:52 | 只看该作者
试试强制类型转换

使用特权

评论回复
8
huangcunxiake| | 2015-9-26 23:45 | 只看该作者
应该本来就是那么写的不

使用特权

评论回复
9
lefeng| | 2015-9-27 22:08 | 只看该作者
试一试把强制类型转换放在其它中语句进行

使用特权

评论回复
10
稳稳の幸福| | 2015-9-29 19:19 | 只看该作者
这个就尽量避免使用自己不太了解的东西吧。

使用特权

评论回复
11
拉克丝| | 2015-9-30 20:24 | 只看该作者
Error不能忽略吧,忽略了还能运行吗,warning可以忽略,IAR里可以设置

使用特权

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

本版积分规则

3

主题

8

帖子

0

粉丝