假设您有类(c ++)或模块(单个c文件)。然后在你的一个函数中你想要存储一个变量的副本并保持它的值,直到下次调用该函数为止,是否更好地拥有一个全局(在c ++中可以是私有的而在c中不是extern'd)它在模块范围内)还是制作一个局部静态变量?
e.g:
void some_func_that_does_not_do_anything_useful(int arbVal)
{
static int lastArbVal = 0;
if (arbVal > lastArbVal)
{
lastArbVal = arbVal;
}
}
我制作静态的原因是为了尽量限制其范围,但我读过的某些内容建议你应该使用全局变量,所以现在我很困惑。
什么是最好的(如果有的话)?,利弊?
答案 0 :(得分:10)
这里的规则很简单:如果变量需要由多个函数访问,请将其设置为全局。如果没有,函数内的static
变量通常会更好。其中一个优点是避免污染全局命名空间。
请注意,如果不需要在文件外部访问全局变量,最好将其声明为文件范围变量(即,将其声明为static
)
回到你的例子,我认为最好像你已经使用的那样使用static
变量。