硬汉嵌入式论坛

 找回密码
 立即注册
查看: 130|回复: 7
收起左侧

[STM32H7] 请教下各位大佬, 定义数组大小, 在mdk里面使用变量形式定义可以, 但在iar里面却不行, 大佬有没有什么比较好的解决方法 ?

[复制链接]

720

主题

3776

回帖

5961

积分

论坛元老

积分
5961
发表于 昨天 11:02 | 显示全部楼层 |阅读模式




请教下各位大佬, 定义数组大小, 在mdk里面使用变量形式定义可以, 但在iar里面却不行, 大佬有没有什么比较好的解决方法 ?

定义形式如下:

01. mdk

    char *find  = "25645251";
   int find_len = strlen(find);
   int map[find_len];        mdk 里面这样定义是没有问题的

02.  iar

    char *find  = "25645251";
   int find_len = strlen(find);
   int map[find_len];        iar 里面这样定义提示错误,提示必须使用常量定义  ??


03.  如果在 iar 里面定义一个最大值的话是可以,但这样就会浪费掉一部分 sram 空间,
      各位大佬有什么好的解决方法没呀v??

     












回复

使用道具 举报

3

主题

457

回帖

466

积分

高级会员

积分
466
发表于 昨天 13:42 | 显示全部楼层
使能编译器里的VLA选项
回复

使用道具 举报

10

主题

152

回帖

182

积分

初级会员

积分
182
发表于 昨天 14:47 | 显示全部楼层
本质上还是静态长度的数组吧, 如果是真正动态的, 估计那个也不支持, 需要用动态内存分配了
回复

使用道具 举报

720

主题

3776

回帖

5961

积分

论坛元老

积分
5961
 楼主| 发表于 昨天 16:21 | 显示全部楼层
glory 发表于 2026-1-11 13:42
使能编译器里的VLA选项

这个选项在编译器里哪里使能呀 ?
回复

使用道具 举报

720

主题

3776

回帖

5961

积分

论坛元老

积分
5961
 楼主| 发表于 昨天 16:22 | 显示全部楼层
amfy 发表于 2026-1-11 14:47
本质上还是静态长度的数组吧, 如果是真正动态的, 估计那个也不支持, 需要用动态内存分配了

如果使用内存管理方法的话应该是可以的, 只是需要修改程序了
回复

使用道具 举报

4

主题

445

回帖

457

积分

高级会员

积分
457
发表于 昨天 18:33 | 显示全部楼层
回复

使用道具 举报

720

主题

3776

回帖

5961

积分

论坛元老

积分
5961
 楼主| 发表于 昨天 19:28 | 显示全部楼层
cctv180 发表于 2026-1-11 18:33
在下面链接半中间位置有你找找看

https://netstorage.iar.com/SuppDB/Public/UPDINFO/013556/ew/doc/i ...

好的 , 我找找看
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
发表于 8 小时前 来自手机 | 显示全部楼层
搜搜变长数组相关内容,但不建议这么用,如果仅仅是举例中的使用情况可以使用sizeof确定数组长度,如果是运行过程确定数组长度那就用动态内存分配。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-12 16:22 , Processed in 0.046451 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表