完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
如图所示,我在代码中对g_FuncErrInfo.ErrRecordFlag的值初始化为1,但实际在主循环中又变为0了,我仔细检查过该变量的赋值,绝对没有出现写0的操作: 经过很多轮检查,我很确定没有对结构体参数置0操作,没有额外置0的操作。造成这种现象的原因是什么? |
|
相关推荐
2个回答
|
|
|
根据您提供的信息,我们可以分析以下几个可能的原因:
1. 编译器优化:可能是编译器在编译过程中对代码进行了优化,导致变量的值在某些情况下被优化掉了。您可以尝试关闭编译器优化,看看问题是否仍然存在。 2. 硬件问题:可能是您的硬件设备存在问题,导致变量的值在某些情况下被错误地修改。您可以尝试在不同的硬件设备上运行您的代码,看看问题是否仍然存在。 3. 代码逻辑问题:虽然您已经仔细检查过代码,但仍然有可能存在一些隐蔽的逻辑问题。您可以尝试使用调试工具,如单步调试、断点调试等,逐步检查代码的执行过程,看看变量的值在哪个地方被修改。 4. 内存问题:可能是您的代码中存在内存泄漏或者内存越界等问题,导致变量的值被错误地修改。您可以尝试使用内存检查工具,如Valgrind等,检查您的代码是否存在内存问题。 5. 编译器问题:可能是您使用的Segger编译器存在问题,导致变量的值在某些情况下被错误地修改。您可以尝试使用其他编译器,如GCC、Clang等,看看问题是否仍然存在。 综上所述,您可以尝试以下步骤来解决问题: 1. 关闭编译器优化,重新编译代码。 2. 在不同的硬件设备上运行代码,检查问题是否仍然存在。 3. 使用调试工具逐步检查代码的执行过程,找出变量值被修改的位置。 4. 使用内存检查工具检查代码是否存在内存问题。 5. 尝试使用其他编译器编译代码,检查问题是否仍然存在。 希望以上建议能帮助您解决问题。
最佳答案
|
|
|
|
|
|
我将使用条件反了一下,默认为0,置1时返回,目前正常了,这应该是编译器原因
|
|
|
|
|
只有小组成员才能发言,加入小组>>
457个成员聚集在这个小组
加入小组1409 浏览 0 评论
HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函数
1101 浏览 1 评论
1865 浏览 2 评论
1282 浏览 1 评论
HPM monitor studio 只能在 hpm芯片+hpm_sdk 的组合下才能用吗?
1662 浏览 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-2 00:37 , Processed in 0.737554 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2017
