在IAR平台代码移植时,出现了N多个error: #28: expression must have a constant value。首先检查一遍“.c”、“Inlcude Paths”、“Define”,都没有问题,这会是什么原因呢?
通常情况下,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即可。
经过以上的设置,就可以不考虑数组长度的问题了,编译错误自然也就解决。
【更多内容,请关注微信公众号】