extern int i ;
声明并非定义,
extern int i = 1;
进行定义,,对于变量只能定义一次,但可以多次声明。
//A.cpp inti; intmain() { } //B.cpp inti;
出现错误:
Linking... B.obj:errorLNK2005:"inti"(?i@@3HA)alreadydefinedinA.obj Debug/A.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound Errorexecutinglink.exe. A.exe-2error(s),0warning(s)
如果试图在a中引用b,那么出现错误:
//A.cpp intmain() { i=100;//试图使用B中定义的全局变量 } //B.cpp inti; 编译结果如下: Compiling... A.cpp C:\DocumentsandSettings\wangjian\桌面\tryextern\A.cpp(5):errorC2065:‘i‘:undeclaredidentifier Errorexecutingcl.exe. A.obj-1error(s),0warning(s)
这样用extern解决:
1 //A.cpp 2 externinti; 3 intmain() 4 { 5 i=100;//试图使用B中定义的全局变量 6 } 7 //B.cpp 8 inti;
const对象一旦创建不可改变,,而且其被设定为只在当前文件内有效,,所以想要在其他文件中使用,,需要由下来解决
a.cpp
extern const int buffer= 1;
b.cpp
extern const int buffer;
关于extern static 和 const,布布扣,bubuko.com
原文:http://www.cnblogs.com/fuzhenzhen/p/3624254.html