关于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条回答
zc123
2019-10-17 04:29
本帖最后由 zc123 于 2016-12-28 10:46 编辑
777ai77 发表于 2016-12-28 10:04
我比较好奇的还是 hex文件里多了什么东西, 数据量我说错了, 数据量是 45000B 。

反正不管加不加cons ...

hex里面包含的信息和bin其实是一样的,只是换了一种存储方式而已。我是写过一个hex和bin互转的小脚本才明白的。
至于大小为什么不一样的原因是基本上是keil的优化
被定义为const的变量是一定会写入到生成的代码中的,
而只定义未被调用的全局变量keil会优化掉,不是压缩,而是这个变量被删除了,如果想让代码大小一致,可以程序里添加个print(a),就可以看到一样了

一周热门 更多>