78
278
512
金牌会员
使用道具 举报
1万
7万
11万
管理员
eric2013 发表于 2024-9-2 08:41 方便的时候把代码也分享下,无码无真相。
void fun(void) { //static u8 i=0; static u32 i=0; if(i==0) { i=1; } …… 程序在走完以上if条件判断语句以后,i应该一直为1,但奇怪的问题在这里发生了。 i定义为u32程序功能逻辑正常。 定义为u8,i的值会被莫名其妙清零,导致反复进入if条件里的语句,导致程序逻辑功能异常。 省略号部分程序并没有操作i变量的代码。 …… }
logo 发表于 2024-9-2 09:39 只节选了出问题部分的代码。 [mw_shl_code=c,true]void fun(void)
8
65
89
初级会员
0
290
高级会员
49
385
532
lb1057907736 发表于 2024-9-2 12:24 试试这样子volatile static u8 i=0;看看和static u32 i=0;效果是否一样?可能就是优化与数据对齐的问题。
wanglehui_12 发表于 2024-9-2 15:27 你试试打数据断点呢(写操作)?看能不能抓到
本版积分规则 发表回复 回帖后跳转到最后一页
|小黑屋|Archiver|手机版|硬汉嵌入式论坛
GMT+8, 2025-8-12 02:52 , Processed in 0.049928 second(s), 27 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2023, Tencent Cloud.