8

假设您有一个类 (c++) 或模块(单个 c 文件)。然后在你的一个函数中,你想存储一个变量的副本并保存它的值直到下次调用函数时,最好有一个全局的(在 c++ 中可能是私有的,而不是在 c 中保留它在模块范围内)还是创建一个局部静态变量?

例如:

void some_func_that_does_not_do_anything_useful(int arbVal)
{
    static int lastArbVal = 0;

    if (arbVal > lastArbVal)
    {
        lastArbVal = arbVal;
    }
}

我制作静态的原因是尽可能限制其范围,但是我读到的某些内容建议您应该为此使用全局变量,所以现在我很困惑。

什么是最好的(如果有的话)?,优点/缺点?

4

1 回答 1

10

这里的规则很简单:如果变量需要被多个函数访问,则将其设为全局变量。如果没有,static函数内部的变量通常会更好。优点之一是它避免了污染全局命名空间。

请注意,如果全局变量不需要在文件外访问,最好将其声明为文件范围变量(即声明为static

回到你的例子,我认为最static好像你已经做过的那样使用变量。

于 2013-10-17T08:33:15.577 回答