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

本文介绍了如何在Keil和IAR编译器中使用C99标准的可变长度数组(VLA),以解决定义数组时长度未知的问题。通过在Keil中设置c99Mode或在IAR中选中AllowVLA,可以灵活地处理数组长度不确定的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常情况下,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 ,两种方法并未实际测试过,如有哪位同仁用过或者测试了,还请在下方的评论区,留言测试的结果。
谢谢了!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值