vodi fun(){
int v1 = 0;
static v2 = 0;
}
我用jlink调试的时候这两个变量都没有初始化,如果把int v1 = 0;写成两句int v1;v1=0;可以初始化,还有静态变量应该会自动初始化为零啊,可是也没有初始化,此外,我定义的全局变量也不会初始化,哪位大神知道是怎么回事啊?
我的局部变量在一个循环中使用到了,用于点亮和熄灭LED,比如
vodi fun(){
int v1 = 0;
while(1){
if(v1 == 10){
LED_ON();
v1 = 0;
} else{
LED_OFF();
}
Delay(1000);//延时1s
}
}
此外,我在keil中设置的优化级别为0,但是V1不能初始化啊,编译器是如何判断我的变量有没有用到啊?
“但是V1不能初始化啊”
你是如何监控V1数值的?是否查看过反汇编的运行情况?
右击变量名,然后加入监事列表,我看到没有初始化;此外我还可以让程序全速运行查看LED状态,发现LED也没有闪烁
追答“此外我还可以让程序全速运行查看LED状态,发现LED也没有闪烁”
可是按你的程序写法,这LED本来就无法闪烁啊。永远处于关断状态。