IAR编译“长度为变量的数组”时报错
现象:


原因&解决办法:
C99支持数组长度下标为变量,C89不支持,在IAR设置Options->C/C++ Complier下的Language中,选择C99并勾选Allow VLA,即允许变量长度数组Variable length arrays,这样程序中的数组可以使用变量做下标了。
注意:(1)VLA只表示数组声明时长度可以是变量,一旦声明完毕数组长度不可变,并不能动态伸缩;
(2) 变长数组不能存放在静态存储区,即不能是全局变量和静态变量;
(3)变长数组不能在声明时初始化,即int size=3;arr[size] = {0}是错误的,因为数组下标是变量,编译时编译器不知道其确切长度,只有在运行时其长度才确定。

编译通过。

浙公网安备 33010602011771号