我偶然发现了一些像这样的代码:
extern Space::MyClass &Global;
我知道about extern,但我的问题是,为什么有人会把&符号放在那里?它与以下内容有什么区别?
extern Space::MyClass Global;
答案 0 :(得分:1)
不同之处在于,您发现的那个必须被声明为引用其他内容。可能它是条件编译配置技巧的一部分。
答案 1 :(得分:1)
extern
必须与变量的实际定义相匹配。
据推测,其他单位之一包含:
Space::MyClass &Global = whatever....;
这意味着您必须使用extern Space::MyClass &Global;
进行提取。 extern
声明中的类型不匹配会导致未定义的行为(无需诊断)。