【发布时间】:2013-10-17 08:30:23
【问题描述】:
假设您有一个类 (c++) 或模块(单个 c 文件)。然后在你的一个函数中,你想存储一个变量的副本并保存它的值直到下次调用函数时,最好有一个全局的(在 c++ 中可能是私有的,而不是在 c 中保留它在模块范围内)或制作一个局部静态变量?
例如:
void some_func_that_does_not_do_anything_useful(int arbVal)
{
static int lastArbVal = 0;
if (arbVal > lastArbVal)
{
lastArbVal = arbVal;
}
}
我制作静态的原因是尽可能限制其范围,但我读到的某些内容建议您应该为此使用全局变量,所以现在我很困惑。
什么是最好的(如果有的话)?优点/缺点?
【问题讨论】:
-
如果您只在该功能中使用它,而不是在其他任何地方,那么将其设为
static可能是最好的解决方案。尽管您可能想考虑多线程等情况,因为静态变量将在所有线程之间共享。 -
为了封装,最好使用本地静态。这也是许多 C 函数采用的方法。
strtok浮现在脑海中。 -
引用
strtok手册页:“永远不要使用这些函数”。让我们不要用它作为如何做事的例子:-) -
你能分享你在这种情况下应该使用全局变量的资源吗?
-
不,这个例子几乎展示了我在我的代码中是如何使用它的。它都在这个功能中,没有在其他任何地方使用:)