涉及extern識別符號宣告:
在.h檔案中不要定義變數,通常為宣告變數,定義變數會出現「error lnk2005: 已經在 .obj 中定義」類似這樣的錯誤。根據c++規定,變數的宣告必須同時滿足兩個條件:(1)宣告必須使用extern關鍵字;(2)不能給變數賦初值
例:
extern int a; //宣告
int a; //定義
int a = 0; //定義
extern int a = 0; //定義
在「.h」檔案中將可共享函式前加上extern
例:單個cpp程式
void initdata(); //具體定義在對應原始檔中
多個cpp程式
extern void initdata(); //具體定義在對應原始檔中
單個cpp程式
int counum = 0;
unsigned char commandlen = 0;
多個cpp程式
「.h」檔案中宣告
extern int counum;
extern unsigned char commandlen;
「.cpp」檔案中定義及初始化
extern int counum = 0;
extern unsigned char commandlen = 0;
* 普通陣列 *
單個cpp程式
int counum[5];
多個cpp程式
「.h」檔案中宣告(注意陣列[ ]內不標長度)
extern int counum;
「.cpp」檔案中定義及初始化
extern int counum[5] = ;
* 結構體陣列 *
單個cpp程式
typedef struct cluster clu;
clu clu_data[10];
多個cpp程式
「.h」檔案中宣告(注意陣列[ ]內不標長度)
typedef struct cluster clu; //標頭檔案中定義結構體
extern clu clu_data; //宣告結構體陣列
「.cpp」檔案中定義(其他原始檔只要包含」.h」檔案即可使用全域性變數)
clu clu_data[10];
另外注意若在全域性變數定義所在原始檔使用static識別符號,則該變數只在當前cpp內有效。標頭檔案不會進行編譯,當在標頭檔案裡使用static識別符號時只在包含該標頭檔案的.cpp檔案進行編譯時使用static定義
C語言全域性變數多檔案使用
c語言全域性變數多檔案使用 定義乙個全域性變數,想在多個檔案中使用,如下 externintvar include var.h intvar 10 include var.h include var.h include var.h 只能在乙個檔案裡面賦初值,否則鏈結出錯。看到個c的題 全域性變數可不...
C 全域性變數建構函式的呼叫
c 是不能在全域性scope裡寫表示式,原來一直以為指令的執行都是在main函式裡的.但c 裡可以呼叫類的建構函式對類初始化.建構函式顯然不能是在main函式裡呼叫,那在什麼時候呼叫呢?是在一段叫做init的 段裡.linux的elf可執行檔案格式分為若干段 elf可執行檔案格式 elf heade...
多檔案共享全域性變數和函式 原創
在乙個檔案中定義的變數和函式如何能被其他檔案使用,不會出現多重定義和未定義的編譯錯誤,這要使用好標頭檔案和關鍵字extern。大家都知道extern是宣告外部變數的時候使用的,而函式宣告預設就是extern的。如果在乙個檔案中定義乙個變數a,int a 那麼只有本檔案可以使用a變數,其他的檔案看不到...