关于extern const int

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:22:58
在VC6的工程中,如果在一个文件里定义const int x=3;在另一个文件里写extern const int x;会出现链接错误,请问这是怎么回事,关于全局的常量有没有什么好的解决办法呢(除了include某个公共的头文件)?
这个错误是只在VC6里有,还是别的编译器也会出现?
我在学校的机房,连CSDN都上不去,而且只有VC6一种编译器……所以,拜托了
不加const是可以的,但是为什么加了const就不可以呢?

x虽然是全局变量,但它是在另一个文件里定义的,所以应该有extern const int x;的声明的(这是声明不是定义,声明可以有多次)。如果不加这个声明,我试了试,会出现变量未定义。

gcc下就没有问题。VC对C++标准的支持不是很好,我试了试,也不行,而且VS2005也不行……

const 修饰的全局变量的连接性默认是文件内部连接,所以你在一个文件中定义的const 变量只在当前文件中可见,如果你要在其他文件中引用该常量的话,应该在定义时加上extern:

extern const int x = 3;

然后再在其他文件中:

extern const int x;

就可以了。

extern const int x本身就是全局变量,某个文件再定义const int x不就是重复定义?

用extern int x 试试。

直接 extern const int x = 3;试试?