关于C语言【全局变量】与【全局常量】在STM32中储存方式的区别

2019-10-15 20:18发布

本人在使用 STM32液晶屏的时候,在工程里面 写入了一个 u16 a[]={这张图片的RGB565代码,1万个数据};
编译后 HEX文件有 88KB 1.png
后来 试着 在数组前面增加了一个 const修饰 , const u16 a[]={这张图片的RGB565代码,1万个数据};
编译后 HEX文件约200KB 2.png

3.png
4.png

搞不明白的是 这100多KB差别在哪里。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
22条回答
aozima
2019-10-16 23:41
本帖最后由 aozima 于 2016-12-28 10:11 编辑

自己仔细对比MAP文件呀。

一般来讲,加不加const只会影响RAM的占用,生成的BIN应该是差不多的。

但有一种可能就是:
MDK的链接器应该有压缩功能的,所以当没有const时,虽然占用RAM大,但RO中的init却可以压缩,所以出来的镜像比较小。
而有const时,就不能压缩了,所以镜像会大。

一周热门 更多>