我一直在使用匿名命名空間來存儲本地數據和函數,並想知道數據何時被初始化?應用程序何時以與靜態數據相同的方式啓動,還是依賴於編譯器?例如:什麼時候匿名命名空間數據被初始化?
// foo.cpp
#include "foo.h"
namespace {
const int SOME_VALUE = 42;
}
void foo::SomeFunc(int n)
{
if (n == SOME_VALUE)
{
...
}
}
問題出現在某些代碼是線程安全的。在上面的例子中,我需要確定SOME_VALUE
是在第一次調用SomeFunc之前初始化的。