STM32 学习之不定长数组的定义

通常情况下,keil、IAR 在定义数组的时候,都是需要指定数组的长度,但是我们大多数情况下是不知道我们输入的数据可能会有多长。
所以为了尽可能的包含所有的情况,通常的做法就是在定义数组的时候,将数组的长度定义的非常长。结果就会导致多数情况下,大量的内存空间被浪费了。

其实在C99新增的标准中是有关于这个的定义的,而且Keil和IAR 也是支持的。

下面我们来看看具体的实现方法:
一、在Keil 中的设置方法
在Keil4.7编译配置管理的c/c++选项卡中Misc control中填写 --c99(或者 --gnu 此方法还未测试)
如图
在这里插入图片描述
在linker选项卡中删除Misc control中的数据
在这里插入图片描述

在keil5编译配置管理的c/c++选项卡中选中 c99 Mode
在这里插入图片描述
在linker选项卡中删除Misc control中的数据
如图 在这里插入图片描述
这样的话,编译就能不报错,通过了…

二、在IAR 中的设置方法
在options->C/C++ Compiler的C dialect 选中 Allow VLA即可。
如图
在这里插入图片描述

ok! 经过以上的设置,就可以不考虑数组长度的问题了!哈哈哈~~

IAR 中的选中 Allow VLA, 以及在Keil 设置项Misc control 中填入 -gnu ,两种方法并未实际测试过,如有哪位同仁用过或者测试了,还请在下方的评论区,留言测试的结果。
谢谢了!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章