全域性變數,在.**件宣告。
1、加extern,別的檔案可以使用,.cpp可以使用,其它包含此標頭檔案的都可以使用。但如果超過2個檔案包含此標頭檔案,會有重複定義的鏈結錯誤。
可以使用 namespace 來解決,匿名namespace相當於編譯為此obj生成了 隨機的作用域名稱,多個檔案包含,也就形成了多個隨機作用域,所以一般不建議使用匿名namespace。
2、不加extern,只有.h可以使用,本檔案的.cpp也不可以使用。
雖然不可使用,但依舊可以多檔案包含此標頭檔案,但是包含後,就是多作用域,也就是多個隨機作用域名稱。a.cpp包含,就是隨機作用域a,b.cpp包含就是隨機作用域b。操作時,各用個的。
多包含,依然可以使用 namespace 來解決重複定義的問題。
全域性變數使用總結:
1、正確的使用方式:.h中實名namespace+extern宣告,對應.cpp中帶型別的 變數定義,可初始化,也可不初始化;
2、.h中直接宣告,不定義,不加namespace,不加extern,.cpp中直接不認識此變數,編譯錯誤。因為 不加extern宣告,只限制在本檔案可用。
3、.h中直接宣告+定義,(有初始化就代表定義),單個檔案包含沒有問題,可以使用。多包含時,重複定義的鏈結錯誤。
4、.h中使用匿名namasapce,隨機作用域,單個檔案包含沒有問題,因為就乙個作用域在使用。多檔案包含,會在有多份定義在多個作用域中。使用錯誤,很難查出錯誤。
5、.h中使用實名namespace,不使用extern,多個檔案包含,依然有重複定義的鏈結錯誤;
6、.h中,實名namespace,不使用extren,只宣告,不定義,在對應.cpp中定義變數時,會有 編譯錯誤:重定義;
簡單總結:
多檔案使用變數,請使用實名namespace+extern宣告+定義;
c 全域性變數的使用
昨天看了新泰科技的筆試題。第乙個感覺.下屆的基礎太差。然後發現乙個有趣的題 c 全域性變數在其他的cpp檔案中怎麼使用?我的第一感覺是直接使用。不過感覺加 include 和 這樣回答更好,順便問了下同寢的人。發現完全不同的答案,他說要使用每乙個cpp裡都要加extern.我倆僵持不下,於是開啟vs...
c 全域性變數的使用
在c 中定義全域性變數是應該盡量在.cpp檔案中定義,而不要在.h 檔案中 定義,定義好了之後,可以在.h檔案中利用 extern關鍵字進行 宣告.如果在.h檔案中定義的話,多層包含可能會引起重複定義的錯誤.下面是乙個示例 在base.cpp中定義全域性變數 base.cpp int g maxti...
C 全域性變數的使用
c 全域性變數的使用 c 應用程式中.使用者登陸後.比如要把使用者名稱,使用者等級,使用者ip位址等等記錄到變數中.我們需要使用到全域性變數.就跟asp 中登陸後使用session,cookie的原理是一樣的.有一種方式總可能會記錄下使用者登陸的資訊,c 中用到的是自定義乙個類.其中定義靜態變數來實...