关于extern static 和 const

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;

posted @ 2014-03-25 21:48  Frider  阅读(359)  评论(0)    收藏  举报