1 全域性變數extern 總結

2021-07-16 20:15:18 字數 872 閱讀 5276

《extern全域性變數》

1.標頭檔案說明:

標頭檔案一般存放變數、函式的宣告(區別宣告和定義),因為標頭檔案可能會被多個原始檔引用(此處非乙個ifndef的乙個標頭檔案被二次包涵)。假如將定義放入標頭檔案,標頭檔案被多個原始檔引用就會對變數、函式的重定義錯誤。

ps:變數、函式只能定義一次,永遠不要在標頭檔案定義變數

2.extern和static

(1)static   型別   變數名;

static用來表示不能被其它檔案訪問的全域性變數和函式,其儲存區域是在靜態儲存區, 生存期都是全域性的。當在對應的標頭檔案和原始檔中分別宣告和定義後,static限定作用域在本模組(檔案)內部,即其作用域僅限本原始檔。

使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。

(2)extern  型別   變數名

函式:函式在宣告和定義時省略extern關鍵字,其性質都是全域性的。

變數:方法一:有三個檔案oc1.h、oc2.h、oc3.h。在oc1.h中宣告:extern int a;

oc2.c、oc3.c對全域性變數的使用如下:可在oc1.c中對a進行定義,oc2.c、oc3.c使用時只需將其標頭檔案包涵oc1.h。

方法二:共享變數宣告:當乙個變數被宣告和定義過後(例如在oc1.c中定義了int a;),在某個原始檔(oc2.c檔案)中需用到該變數,則只需在該原始檔(oc2.c)中做以下宣告:extern  int  a;該宣告的意義為它告訴編譯器a已經被定義過(已經分配了記憶體空間),不需要在分配記憶體空間了。所以當使用變數a時,仍是對原來位址進行操作。

ps:在第二種方法中,在oc2.c檔案中宣告後,不能再定義(因為在oc1.c)中已經定義過,即不能出現重定義的現象。

用extern定義全域性變數

1.extern的作用 2.例項 以上已經說了extern的作用,下面我們來舉個例子,如 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 inc...

用extern定義全域性變數

1.extern的作用 2.例項 以上已經說了extern的作用,下面我們來舉個例子,如 在test1.h中有下列宣告 ifndef test1h define test1h extern char g str 宣告全域性變數g str void fun1 endif 在test1.cpp中 inc...

QT5 extern全域性變數

1.全域性變數 getdata.h 全域性變數在函式體外宣告,不可賦值,否則就成了定義。extern gosystem systemcator extern kassembly api extern bool flagcir 然後在cpp檔案中定義,分配記憶體空間。main.cpp kassembl...