函数里静态局部变量
时间:2010-05-05 来源:happycozy
函数里静态局部变量的用法
函数里面静态局部变量变量放在全局变量区,作用于本函数内部,有个常用的作用是作为函数内部的标志位,通常有两种用法。
第一种:进入函数处理的标志,只处理一次(只get一次,放到全局变量,函数再进来时不再处理,可以避免重复获取一些不会改变的内容,注意静态局部变量初始化要小心,进入函数不能初始化,不然再进入就改变了全局变量的内容,而且不再去get);
void func(void)
{
static bool bflag = FLASE;
//注意下面不能初始化,每次进来都初始化,就没有意义了,习惯了定义就初始化,所以特别容易出错;
static val;
....
if(bflag == FLASE)
{
//处理
...
val = get();
bflag = TRUE;
}
}
第二种:避免可重入的影响,例如重启函数,在处理的时候再来消息要重启,又会进入函数,这时就会有可重入产生的问题(正在重启中收到再次重启的消息,可能会造成问题);处理过程前先将标志置为反,完成处理时再将标志还原,就可以避免重入;
void func(void)
{
static bool bflag = FLASE;
....
if(bflag == FLASE)
{
bflag = TRUE;
//处理
...
restart();
bflag = FLASE;
}
}
相关阅读 更多 +