グローバル変数は、変換モジュールに表示される順番と、異なる変換モジュール内の変数の初期化の相対的な順序(不特定の「静的初期化順序の失敗」)で初期化されます。名前空間はC++の初期化順序に影響しますか?
名前空間に影響がありますか?
//second.cpp
namespace {
int first;
}
int second;
は例があります名前空間にグローバルオブジェクトを置くことは、初期化順序に影響します。
//first.cpp
int first;
int second;
が、それは、このコードに比べて初期化順序の違いがあります。たとえば、私はこのコードを持っている場合は?
C++標準では、グローバルスコープ([basic.scope.namespace]/3)に表示されるものだけがグローバル名として定義されています。だからC++に関しては、second.cppの 'first'はグローバルではありません。明らかに、「グローバル」、とりわけ変化する「グローバル」がすべてのプログラミング言語で動作するPITAであることを実践するためには、それは「グローバル」です。 –