利用關鍵字extern,實現全域性變數的共享
extern 變數只能一次定義(宣告定義), 多次宣告。
宣告:
extern int a ;
int a ;
(宣告)定義:
extern int a = 0;
int a = 0 ;
一、兩個cpp檔案之間共享===test.cpp===
#includeusing namespace std;
int a = 0; //定義變數
void jisuan(int b) //定義函式
{ a += b;
cout << "test.cpp:"<===main.cpp===
#include using namespace std;
extern int a; //引用test.cpp中的a變數
extern void jisuan(int b); //函式宣告,必須先宣告
int main(int argc, char** ar**) {
jisuan(2); //呼叫後,a=2
cout << "main:" << a<
結果:
二、有標頭檔案的檔案間共享
*****test.h====
#ifndef _test_h_
#define _test_h_
extern int a; //宣告
void jisuan(int b); //函式宣告
#endif
====test.cpp===
#includeusing namespace std;
int a = 0 ; //定義
void jisuan(int b) //定義
{a += b;
cout << "test.cpp:"<====main.cpp===
#include #include"test.h"
using namespace std;
//extern int a = 8; 錯誤,不能多次定義這個全域性變數a
//extern int a ; //包含了標頭檔案,變數和函式則不需要再次宣告,也可以宣告變數,表示其是引用
//extern void jisuan(int);
int main(int argc, char** ar**) {
jisuan(2);
cout << "main:" << a<結果:
三、第二種的修改,在標頭檔案中宣告定義全域性變數
*****test.h====
#ifndef _test_h_
#define _test_h_
int a = 0; //宣告並且定義
void jisuan(int b); //函式宣告
#endif
====test.cpp===
#includeusing namespace std;
extern int a ; //宣告引用
void jisuan(int b) //定義
{a += b;
cout << "test.cpp:"<====main.cpp===
#include #include"test.h"
using namespace std;
int main(int argc, char** ar**) {
jisuan(2);
cout << "main:" << a結果:
extern的簡單使用
extern用在變數宣告中常常有這樣乙個作用 你要在 c檔案中引用另乙個檔案中的乙個全域性的變數,那就應該放在 h中用extern來宣告這個全域性變數。這個關鍵字真的比較可惡,在定義 函式 的時候,這個extern居然可以被省略,所以會讓你搞不清楚到底是宣告還是定義,下面分變數和函式兩類來說 尤其是...
VC中extern的使用
extern為外部連線符號 通常是在定義介面 全域性變數 的時候這樣使用的,這樣的乙個宣告寫在標頭檔案內,供其他檔案包含。這時候extern表示函式的實現部份不在檔案內部,在連線的時候統一由聯結器處理,編譯器通常會假定編譯時候找不到實現部份的函式為extern形式.當然,加了extern也可以在該檔...
C 中extern的使用
來自 1.宣告外部實體 宣告外部全域性變數或物件,一般用於標頭檔案中,表示在其它編譯單元內定義的變數,鏈結時進行外部鏈結,如 1.宣告外部實體 宣告外部全域性變數或物件,一般用於標頭檔案中,表示在其它編譯單元內定義的變數,鏈結時進行外部鏈結,如 extern int ivalue 此時的extern...