考虑以下例子:
注意:在真实代码中,我无法更改g_TRAGIC的定义。
tt.h声明了一个具有外部链接的全局常量
extern int g_TRAGIC;
tt.cpp将g_TRAGIC定义为
const int g_TRAGIC = 0xF001;
my.cpp想要使用它来定义自己的全局常量
const int g_MAGIC = g_TRAGIC;
这里的“某些”情况是什么意思?在哪些条件下我们可以避免内置/固有类型的SIOF,特别是常量?或者对于所有具有外部链接的常量都必须使用COFU(Construct On First Use Idiom)?在某些情况下,静态初始化顺序混乱也可能适用于内置/固有类型。
注意:在真实代码中,我无法更改g_TRAGIC的定义。
g_TRAGIC
吗?C++是允许这样做的,这样可以避免初始化顺序混乱的问题。 - pcarterg_MAGIC
这个变量? - user207421g_MAGIC
是我们提供的接口的一部分。g_TRAGIC
是我无法控制的实现细节。 - Lothar