我有一个情况,我有一个标题/实现对(x.hpp/x.cpp)。在 x.cpp 中定义了一个全局范围的静态变量。
标头 x.hpp 用于相关应用程序中的许多不同位置。并且还打算由应用程序将使用的 dll 使用,无论是自动加载还是通过 dlopen/LoadLibrary 等。
--- 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 实例?
请考虑多线程和 dll 的情况。除了确保代码库中使用 extern 引用 global_var 的每个实例之外,还有什么可以做的吗?