有资源(书籍,在线资料)解释了extern
以下用法:
extern int i; // declaration - has 'extern'
int i = 1; // definition - specified by the absence of 'extern'
并且有支持以下语法的来源:
extern int i; // declaration
extern int i = 1; // definition - specified by the equal sign
// Both marked with 'extern'
我的问题是 - 这是C与C++的区别,还是ANSI与ANSI之前的做法?
现在,更实际的问题:
使用第二种语法,我想创建一个全局对象(从每个编译单元可见)。构造函数不带参数,因此括号和等号都不是必需的。
extern MyClass myobject;
现在编译器如何区分声明和定义?
编辑:回到学校,我习惯了第一种语法(Borland C)。后来我使用了一个编译器(可能是一些古老的 GCC 版本),它拒绝编译没有“extern”的定义。这就是让我感到困惑的原因。