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