首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

extern关键字,该怎么解决

2013-11-29 
extern关键字有点不太理解extern关键字的用法。如果一个标识符加上extern关键字,那么就可以访问在其他任何

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

//A.cpp
int i;
//B.cpp
int i;
改成这种情况就可以避免了,B.cpp中不会生成i,而是去其他地方去找i的链接,这样就不会重定义了
//A.cpp
int i;
//B.cpp
extern int i;
还有就是这种情况,extern会失效,就是在用extern的时候定义一个变量。
//A.cpp
int i=10;
//B.cpp
extern int i=20;//extern失效,再次生成i的实体,造成重定义

[解决办法]
你可以这样简单的来理解:
你在一个cpp文件里定义了一个函数
int fun()
{
   cout<<"Hello"<<endl;
}

在其它cpp文件中使用这个函数前得声明一下
extern int fun();
但是函数声明实际上不需要extern也可,所以一般这样声明即可
int fun();

刚才是函数,现在是全局变量
你在一个cpp文件里定义了一个全局变量
int g = 10;
在其它cpp文件中使用这个全局变量前得声明一下
extern int g;
要注意变量和函数就不同了,函数可以不用extern,变量声明必须extern

热点排行