因为const类型的特殊性,所以只能在所定义的文件你使用,即使是在多个文件里面定义了,在运行时也会被看做是不同的变量,
我们要解决的问题是在只在一个文件中定义const而在多个文件中声明并使用它,
解决办法: 对于const变量不管是定义还是声明,都在前面添加 extern关键字,
// file_1.cc
extern const int bufsize = fcn();
//file_1.h
extern const int bufsize ;//与file_1.cc中定义的是同一个
如果想在多个文件件共享const 对象,必须在变量定义之前添加extern
哎呀,后来博主有自己是了一下,发现还是有一些东西可以挖的,顺便挖一下啊
贴地址:http://tieba.baidu.com/p/3230349640
http://bbs.csdn.net/topics/360106665
http://blog.sina.com.cn/s/blog_76fbd24d0101a62k.html
恩,搞明白了啊,这个c++啊,跟C语言不大一样啊,他好像在创建工程时不需要#include“文件名”的样子,直接用extern声明一下就好,这是之前老有冲定义的原因
下面是我的代码,
test.h
#include<iostream>
using namespace std;
extern const int test;
int sss = test;
int ccc()
{
cout<< sss<<endl;
return 0;
}
testforvs2012.cpp
#include <iostream>
using namespace std;
extern const int test =32;
extern int sss;
extern int ccc();
int main()
{
cout<<test<<sss+3<< endl;
ccc();
int c=0;
cin>>c;
return 0;
}
恩,解决了const在多文件之间共享的问题,但是代码很难看,
好了,贴一下,最后的代码,一下午就纠结这一个问题,
test.h
#include<iostream>
using namespace std;
extern const int test;
int ccc();
testforvs2012.cpp
#include "test.h"
#include <iostream>
using namespace std;
extern const int test =32;
int ccc()
{
cout<< test<<endl;
return 0;
}
int main()
{
cout<<test<<test+3<< endl;
ccc();
int c=0;
cin>>c;
return 0;
}