keil对C51的局部变量进行了覆盖,当一个函数定义了一个局部变量时,这个变量不会像标准C一样随着函数调用完之后收回内存,销毁变量,而是一直不释放,生存期是整个程序的运行时间。如果真的是这样,为什么我写的测试程序却得不到想要的效果呢?
程序大概是这样:
int tmp;
if(key == 0)
{
tmp++;
}
return tmp;
即当我按下按键时,要求得到的局部变量加1,可是这个变量却不会一直加,非要我在int tmp 之前加上关键字static时,这个变量才不释放,才会储存之前的值,使得按键按下一次加一的效果。
希望大侠帮我讲解一下,究竟keil对局部变量是如何处理的?为什么我这里的代码没有得到“不释放”的效果? |