ヘッダーと実装のペア (x.hpp/x.cpp) がある状況があります。x.cpp で定義されたグローバル スコープを持つ静的変数がある場所。
ヘッダー x.hpp は、問題のアプリケーション内のさまざまな場所で使用されています。また、自動ロードまたは dlopen/LoadLibrary などを介して、アプリケーションが使用する dll によって使用されることも意図されています。
--- x.hpp ---
int foo();
void boo();
class fooboo
{ public: void boofoo() {} };
-------------
--- x.cpp ---
static fooboo global_var;
fooboo foo() { return global_var; }
void boo() { global_var.boofoo(); }
-------------
.
私の質問: C++ では、TU(x.hpp/x.cpp) を呼び出して使用する方法のさまざまなユース ケースすべてにおいて、global_var のインスタンスが 1 つだけ存在することを保証できる手段はありますか?
マルチスレッドと dll の状況を考慮してください。extern を使用して global_var を参照するコードベース内のすべてのインスタンスを確認する以外に、他にできることはありますか?