静态关键字保存函数返回的值

Static keyword saves value returned by function?

本文关键字:返回 函数 关键字 保存 静态      更新时间:2023-10-16

我在编写的程序中有几个函数,它们使用了一个我需要用非常慢的函数计算的值。 每次重新运行程序时,此值都会更改,因此我不能只存储静态值。 下面是一个示例。

void this_gets_called_frequently()
{
    static int value = slow_function();
    //do stuff with the above value
}

我在这里的主要问题不是程序无法正常工作,而是整洁。 我真的不想初始化一个全局变量并将值存储在其中,因为它一旦计算就不会改变。 以上面显示的方式使用 static 关键字是否只调用上面的函数进行一次计算? 添加的 const 关键字会有所帮助吗?

谢谢大家,这个问题得到了完美的回答!

是的,局部static变量的初始化最多会发生一次(尽管我记得某些编译器版本在这里可能存在多线程问题)。 const不是必需的,在这种情况下,这主要是可读性和品味的问题。

以上面显示的方式使用 static 关键字是否只调用上面的函数进行一次计算?

是的,在第一次调用this_gets_called_frequently

添加的 const 关键字会有所帮助吗?

不。但添加const文档价值。

可以使用 C++11 中的线程局部变量(如果它们在编译器中可用)。如果您使用的是Windows,则可以使用类似的TlsAlloc API。自 Win32 诞生以来,它就在那里。