在 C 中的变量中定义的数组大小无法在 IAR 中编译,但在 Keil 中构建良好

Array size defined in a Variable in C cannot compile in IAR but builds fine in 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工具链中正常编译

按照这个:https://netstorage.iar.com/SuppDB/Public/UPDINFO/013556/ew/doc/infocenter/GettingStarted/CreatingAnApplicationProject/CreatingAnApplProj.ENU.html

在显示 设置项目选项 的步骤中,确保 select C99。

这是您正在寻找的window:

P.S。还有一个选项可以在 IAR 中明确允许 VLA。参见 http://www.keil.com/support/man/docs/armcc/armcc_chr1359124950297.htm

必须显式启用可变长度数组,编译器才能识别它们。这可以通过在编译器命令行中添加 --vla 或在 IDE.

的选项对话框中选中 C/C++ Compiler > Language 1 > Allow VLA 来完成

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