以下代码是否安全(不保证静态初始化顺序?)。
在一些库中:
class A {
A() : x_ = 0 {
}
int add() {
return ++x_;
}
};
namespace S {
static A a_;
}
#define ADD(varname) \
namespace S { \
static int v_##varname = a_.add(); \
}
宏 ADD 将在多个地方使用。对于任何 ADD 宏使用,是否保证 a_ 将在 v_##varname 之前初始化?
最佳答案
如果你想保证你的情况有一个常见的技巧:
namespace S {
A & getA() {
static A a;
return a;
}
} // namespace S
和
static int v_name = getA().add();
关于c++ - 依赖关系下的静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584532/