我一直在使用匿名命名空间来存储本地数据和函数,想知道数据何时初始化?是应用程序以与静态数据相同的方式启动还是依赖于编译器?例如:
// foo.cpp
#include "foo.h"
namespace {
const int SOME_VALUE = 42;
}
void foo::SomeFunc(int n)
{
if (n == SOME_VALUE)
{
...
}
}
问题出在使一些代码线程安全。在上面的示例中,我需要确定SOME_VALUE
在第一次调用 SomeFunc 之前已初始化。