下面的代碼是否安全(不保證靜態初始化順序?)。靜態初始化在依賴關係的情況下
在一些圖書館:
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(); \
}
宏添加將在多個地方使用。是否保證在v_ ## varname之前爲任何ADD宏使用情況初始化a_?
你是什麼意思安全 - 這是否甚至編譯? –