c - 在 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 工具链中编译良好
解决方案
必须显式启用可变长度数组,编译器才能识别它们。这可以通过添加--vla
到编译器命令行或通过在 IDE 的选项对话框中选中 C/C++ 编译器 > 语言 1 > 允许 VLA 来完成。
请注意,iccarm 生成的 VLA 是在堆上分配的。
推荐阅读
- xcode - ios 的 Ionic 构建失败。InAppBrowser 抛出错误
- html - 我的导航栏内容相互合并
- python-3.x - 从日期时间对象解析日期,然后从字典列表中删除重复项
- sql - 在 Oracle 中将 LONG 转换为时间戳
- javascript - 使用ffmpeg循环编辑视频时出错
- haskell - Haskell 错误 - 无法将类型 `[Int] -> String' 与 `[Char]' 匹配;预期类型:字符串;实际类型:[Int] -> String
- r - 在 R 语言中基于单词序列查找两个字符串之间的匹配
- django - ManagementForm 数据丢失或被篡改。缺少字段:servicesprice_set-TOTAL_FORMS
- android - Android在Webview中仅打开相机选项
- javascript - React:当多个文件名是 index.{js,jsx} 时,使调试更容易的建议?