单片机中有关C语言 定义const常量的问题,请高手帮忙

haozi100 2014-06-12 10:47:16
我使用的是松下单片机,C语言编写。需要定义const常量。如:
#define uchar unsigned char

const uchar S1[5]={1,1,1,1,35};
const uchar S2[5]={14,7,16,8,35};
const uchar S3[5]={2,4,2,4,35};
const uchar S4[5]={10,9,7,6,50};
//----以上定义后编译,只会占用单片机的ROM空间,而不是RAM空间
//----但是下面的定义会同时占用ROM和RAM空间,这是怎么回事,RAM空间有限不够用,ROM还比较大。
const uchar *CD_ab1[ ]={s1,s1,s4,s3,s3};
const uchar *CD_ab2[ ]={s2,s1,s2,s3,s4};
const uchar *CD_ab3[ ]={s4,s1,s4,s1,s3};
const uchar **WA_MAR[ ]={CD_ab1, CD_ab2, CD_ab2, CD_ab1, CD_ab3};

请高手帮忙看一下。我的软件使用这样的架构,写到最后,发现RAM不够了,程序无法运行。现在想改回使用多维数组的话,要改动的地方太多了。应该怎么定义才能保证只占用ROM空间,而不是RAM空间呢。谢谢!
...全文
291 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi100 2014-06-12
  • 打赏
  • 举报
回复
谢谢大侠,就是这个问题困扰了我,按照你说的办法,解决了。谢谢你。
baichi4141 2014-06-12
  • 打赏
  • 举报
回复
const uchar * const CD_ab1[ ];
const uchar * const * const WA_MAR[ ];
单片机没用过,单从语法上讲,指针的值和指针的内容要分别const,一个const不能修饰两个不同的东西

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧