硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 890|回复: 8
收起左侧

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

[复制链接]

740

主题

3938

回帖

6183

积分

论坛元老

自定义头衔

积分
6183
发表于 2026-1-11 11:02:58 | 显示全部楼层 |阅读模式




请教下各位大佬, 定义数组大小, 在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??

     












回复

使用道具 举报

4

主题

482

回帖

494

积分

高级会员

积分
494
发表于 2026-1-11 13:42:09 | 显示全部楼层
使能编译器里的VLA选项
回复

使用道具 举报

11

主题

166

回帖

199

积分

高级会员

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

使用道具 举报

740

主题

3938

回帖

6183

积分

论坛元老

自定义头衔

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

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

使用道具 举报

740

主题

3938

回帖

6183

积分

论坛元老

自定义头衔

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

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

使用道具 举报

4

主题

516

回帖

528

积分

金牌会员

积分
528
发表于 2026-1-11 18:33:40 | 显示全部楼层
回复

使用道具 举报

740

主题

3938

回帖

6183

积分

论坛元老

自定义头衔

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

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

好的 , 我找找看
回复

使用道具 举报

1

主题

23

回帖

26

积分

新手上路

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

使用道具 举报

2

主题

50

回帖

56

积分

初级会员

积分
56
发表于 2026-1-12 18:40:05 | 显示全部楼层
变量定义用数组,长度计算用sizeof()-1
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-24 08:44 , Processed in 0.396869 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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