完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
使用SEGGER Embedded Studio编译器发现变量无法自动初始化, |
|
相关推荐
2个回答
|
|
|
在SEGGER Embedded Studio编译器中,可以通过使用全局变量初始化器来确保变量在声明时被初始化为默认值。
对于静态变量,你可以在声明时直接将其初始化为0。例如: ``` static uint8_t i = 0; ``` 对于结构体,你可以使用以下方式来初始化变量为默认值: ``` struct myStruct { int a; float b; }; struct myStruct myVar = {0}; ``` 上述代码将会将`myVar`结构体的成员变量`a`和`b`都初始化为0。 另外,你也可以使用以下方式来初始化结构体变量为默认值: ``` struct myStruct myVar = {0}; // 或者 .a = 0, .b = 0 ``` 这样就可以确保结构体的成员变量在声明时被初始化为默认值了。 如果你希望在整个项目中都使用默认值初始化变量,你可以在项目的链接脚本 (`*.ld` 文件) 中为全局变量段添加一个ZERO 表示的段。具体操作步骤如下: 1. 打开项目的链接脚本文件 (一般为 `*.ld` 或 `*.x`)。 2. 找到定义全局变量段(如 `.data`)的相关区域。 3. 添加一个具有ZERO 属性的段,例如: ``` .data : { ... } > RAM AT > FLASH .ZERO (NOLOAD): { *(.bss*) } > RAM ``` 这样,所有没有显式初始化的全局变量将会被放置在这个 `.ZERO` 段中,从而被初始化为默认值。 希望这能帮助到你解决问题! |
|
|
|
|
|
在声明时就初始化在这个编译器中无法生效,在代码中实测只能声明成哪种数据类型,初始化没有完成
现在有些数据是按照下面这种写法清零的,我想知道有没有一种高效的方法,不需要主动去初始化在声明时就自动初始化了 |
|
|
1 条评论
|
|
只有小组成员才能发言,加入小组>>
457个成员聚集在这个小组
加入小组1407 浏览 0 评论
HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函数
1101 浏览 1 评论
1863 浏览 2 评论
1282 浏览 1 评论
HPM monitor studio 只能在 hpm芯片+hpm_sdk 的组合下才能用吗?
1661 浏览 0 评论
5843浏览 22评论
2697浏览 4评论
自己做的hpm5321和6750板子怎么都没有1.1的输出呢?
2724浏览 4评论
编译错误: error: unrecognizable insn,不知道原因,请教!
925浏览 4评论
1831浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 20:41 , Processed in 0.764892 second(s), Total 87, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1886
