打印
[开发工具]

怎么把一个常量数组定义到程序空间,使之不占内存

[复制链接]
8290|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kbgyzp|  楼主 | 2008-12-19 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2008-12-19 09:26 | 只看该作者

在IAR中,变量加const修饰。

使用特权

评论回复
板凳
kbgyzp|  楼主 | 2008-12-19 11:02 | 只看该作者

我用的KEIL

加上const也不管用,当main函数调用到后,const定义的常量就开始占内存了。
const u16 *Alarm_Map[10];
Program Size: Code=47142 RO-data=1850 RW-data=208 ZI-data=11048  
对比一下
const u16 *Alarm_Map[1000];
Program Size: Code=47142 RO-data=1850 RW-data=208 ZI-data=15008 


 

使用特权

评论回复
地板
computer00| | 2008-12-19 11:12 | 只看该作者

啥子编译器嘛...试试flash const, __flash const这些

使用特权

评论回复
5
九把刀| | 2008-12-20 10:32 | 只看该作者

你定义的是指向常量的指针数组变量

指针变量仍然保存在RAM中. 

应该定义为const u16 (*Alarm_Map)[1000];

使用特权

评论回复
6
汽车电子| | 2008-12-20 11:46 | 只看该作者

哈哈,你只定义不使用的东西

  Keil是不会编译进去的,Keil很聪明

使用特权

评论回复
7
汽车电子| | 2008-12-20 11:48 | 只看该作者

还是5楼细心

使用特权

评论回复
8
starm| | 2008-12-20 14:56 | 只看该作者

应该定义为const u16 (*Alarm_Map)[1000];

这个定义好像不能通过编译.

应该定义为const u16 Alarm_Map[1000]; 吗?

使用特权

评论回复
9
tengmm2000| | 2008-12-21 09:59 | 只看该作者

在IAR编译器中,怎么把一个常量数组定义到程序空间

在IAR编译器中,怎么把一个常量数组定义到程序空间?

使用特权

评论回复
10
wlq_9| | 2008-12-21 20:51 | 只看该作者

如果

只是常量数组,用const没问题的.
偶的几十K的数据表都是这么放的,不管是iar/ads.

使用特权

评论回复
11
oldcat8999| | 2008-12-21 23:13 | 只看该作者

u16 *const array[10];

试验了一下,RVMDK下可以。

使用特权

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

本版积分规则

53

主题

473

帖子

1

粉丝