首页 > 解决方案 > 在 C 中的变量中定义的数组大小无法在 IAR 中编译,但在 Keil 中构建良好

问题描述

#include<stdio.h>
int main()
{
     int x = 5;
     int length = 5+x;
     int arrayw[length];


        return 0;
}

此代码在 gcc 和 Keil 中构建良好,但在 IAR 中构建不正常。

I get this error : 
Error[Pe028]: expression must have a constant value 

如何在 IAR 工具链中编译良好

标签: carraysgcckeiliar

解决方案


必须显式启用可变长度数组,编译器才能识别它们。这可以通过添加--vla到编译器命令行或通过在 IDE 的选项对话框中选中 C/C++ 编译器 > 语言 1 > 允许 VLA 来完成。

请注意,iccarm 生成的 VLA 是在堆上分配的。


推荐阅读