|
今天遇到个怪事,明明在程序开头定义了一个全局变量,程序执行中间也没有对它进行赋值操作,可是到函数执行中却变了.
背景:ARM7,程序不算大,14K左右
例:
unsigned char Flag = 0;
unsigned char key(void);
void main(void)
{
;;;;; //省略一部分程序
whlei(1) {
;;;; //省略一部分程序
key();
}
}
unsigned char key(void)
{
;;;;; //省略一部分程序
if(Flag == 0)
UART0_PutStr("Flag = 0");
else
UART0_PutStr("Flag != 0");
}
编译、下载,重复搞了几次,结果都是打印出"Flag != 0",我根本没有在其他任何地方调用该变量,也没有对它进行操作,为什么它的值就变了呢?
后来,我实在想不通,就把定义修改为局部变量,并且加入static声明,各位大侠,有碰到过这种问题的没?大概会是什么原因导致的呢?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|