因爲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;
}