ローカル データと関数を格納するために匿名の名前空間を使用しており、データがいつ初期化されるかを知りたいですか? アプリケーションが静的データと同じ方法で起動するときですか、それともコンパイラに依存しますか? 例えば:
// foo.cpp
#include "foo.h"
namespace {
const int SOME_VALUE = 42;
}
void foo::SomeFunc(int n)
{
if (n == SOME_VALUE)
{
...
}
}
問題は、一部のコードをスレッドセーフにすることから生じます。SOME_VALUE
上記の例では、 SomeFunc が初めて呼び出される前に が初期化されていることを確認する必要があります。