1. 程式人生 > >static、extern的用法與區別

static、extern的用法與區別

  面試被問到了,我稍微總結記錄一下。

主要是static和extern全域性變數的區別

1.extern可以使變數在不同檔案共享;

   static限制了變數的作用域,只能在本檔案使用。

   extern和static不能同時修飾一個變數

2.extern是宣告變數,最好是在標頭檔案中做宣告;

   static是定義變數,一般定義static全域性變數時,都把它放在原cpp檔案中而不是標頭檔案。

3.全域性函式宣告預設是extern。

4.函式或變數可以宣告多次,但定義只能有一次。

5.如果使用extern在標頭檔案中定義變數,包含此標頭檔案的多個檔案編譯連線時,會出現該變數被定義多次,因而出錯;

   如果使用static在標頭檔案中定義變數,包含此標頭檔案的多個檔案編譯連線時,不會出現重定義錯誤,每個編譯單元都會有一個獨立的屬於該變數的儲存空間,但由此會對其他編譯單元造成不必要的資訊汙染。