extern关键字
有点不太理解extern关键字的用法。
如果一个标识符加上extern关键字,那么就可以访问在其他任何位置定义的的这个实体。不太理解这句话的含义啊囧
[解决办法]
extern就是告诉编译器,这是一个外部链接,要到其他地方找他的定义。
这样编译器就不会生成相应的实体,而是留下了一个链接,等链接器关联到相应的文件上。
比如下面这种情况,如果在一个工程中有2个相同名称的全局变量,这样就会重定义变量而导致链接失败:
//A.cpp改成这种情况就可以避免了,B.cpp中不会生成i,而是去其他地方去找i的链接,这样就不会重定义了
int i;
//B.cpp
int i;
//A.cpp还有就是这种情况,extern会失效,就是在用extern的时候定义一个变量。
int i;
//B.cpp
extern int i;
//A.cpp
int i=10;
//B.cpp
extern int i=20;//extern失效,再次生成i的实体,造成重定义