在 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工具链中正常编译
在显示 设置项目选项 的步骤中,确保 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是分配在堆上的
#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工具链中正常编译
在显示 设置项目选项 的步骤中,确保 select C99。
这是您正在寻找的window:
P.S。还有一个选项可以在 IAR 中明确允许 VLA。参见 http://www.keil.com/support/man/docs/armcc/armcc_chr1359124950297.htm
必须显式启用可变长度数组,编译器才能识别它们。这可以通过在编译器命令行中添加 --vla
或在 IDE.
注意iccarm生成的VLA是分配在堆上的