为什么要使外部变量成为引用?

Why make a extern variable a reference?

我偶然发现了一些这样的代码:

extern Space::MyClass &Global;

我知道 about extern,但我的问题是,为什么有人会把 & 号放在那里?这和下面的有什么区别?

extern Space::MyClass Global;

不同之处在于,您找到的那个必须声明为引用其他东西。可能是条件编译配置技巧的一部分。

extern 必须匹配变量的实际定义。

推测其他单位之一包含:

 Space::MyClass &Global = whatever....;

这意味着你必须用extern Space::MyClass &Global;来拾取它。 extern 声明中的类型不匹配会导致未定义的行为(不需要诊断)。