我正在编写的程序中有几个函数,它使用一个我需要用非常慢的函数计算的值。每次重新运行程序时,此值都会更改,因此我不能只存储静态值。以下是一个例子。
void this_gets_called_frequently()
{
static int value = slow_function();
//do stuff with the above value
}
我的主要问题不在于程序不工作,而是整洁。我真的不想初始化一个全局变量并将值存储在该变量中,因为它一旦计算就不会改变。以上面显示的方式使用static关键字只调用上面的函数计算一次吗?在那里添加const关键字会有帮助吗?
谢谢大家,这回答得非常完美!
答案 0 :(得分:2)
是的,本地static
变量的初始化最多只会发生一次(虽然我记得有些编译器版本可能会遇到多线程问题)。
const
不是必需的,在这种情况下,它主要是可读性和品味。
答案 1 :(得分:0)
以上面显示的方式使用static关键字只调用上面的函数计算一次吗?
是的,首次调用this_gets_called_frequently
在那里添加const关键字会有帮助吗?
没有。但是为文档值添加const
。
答案 2 :(得分:0)
如果在编译器中可用,则可以使用C ++ 11中的线程局部变量。如果您使用的是Windows,则可以使用类似的TlsAlloc
API。自Win32诞生以来它就在那里。