1,聲明一個(gè)變量,必須加關(guān)鍵字extern
2,沒有關(guān)鍵字extern,則就為變量的定義,無論這個(gè)變量定義時(shí)有沒有初始化
3,只要定義變量時(shí)初始化了,即使前面加了關(guān)鍵字extern,也是定義,不是聲明。(不過只有在函數(shù)體外時(shí),才能夠在定義且初始化時(shí),加上extern關(guān)鍵字,這是為了const變量設(shè)定的)
4,多文件程序中,一個(gè)文件含有變量的定義,另外一個(gè)文件中含有變量的聲明,定義只能有一次,聲明不限。
5,非const變量,定義時(shí)默認(rèn)是加了extern的,即在函數(shù)體外定義變量時(shí),默認(rèn)加了extern,說明這是一個(gè)全局變量,可以被其他文件訪問(訪問的前提是在這個(gè)文件中做了聲明)。
但是const變量,默認(rèn)是不加extern的,也就是即使在函數(shù)體外全局作用域定義一個(gè)const變量,也只能夠在定義的這個(gè)文件訪問,不能被其他文件訪問。要想被其他文件訪問,需要在定義const變量時(shí),顯示的加上extern關(guān)鍵詞。
extern可以置于變量或者
函數(shù)前,以標(biāo)示變量或者
函數(shù)的定義在別的文件(當(dāng)然也有可能定義就在本文件中)中,提示編譯器遇到此變量和
函數(shù)時(shí)在其他模塊中尋找其定義。