Re: [問題] static global 變數 跟 無名的namespac …
※ 引述《QQ29 (我愛阿蓉)》之銘言:
: 如標題
: 據我理解
: static global的變數 寫在.h 然後include這.h的file都擁有一份 這名稱的變數
: 如果這.h 裡面是用
: namespace { int x;}把東西包起來
: 據我理解 效果跟static global變數 是一樣的
: 請教各位兩者差異 以及哪個寫法比較好...
: 我印象中 有人說namespace的寫法比較好~~但是我爬不太到文章
: 謝謝各位
如果你有使用一些 library 所以 #include 了一堆 header files,
你用 global static 還是可能跟它的名稱發生衝突,
像是 basename() 這東西在 <libgen.h> 有宣告,
你如果自己寫的 code 有定義一個 local 的 basename(),
那就會出現宣告式/定義式不一致的 error (一個有 static 一個沒有就會 error),
你用 anonymous namespace 就不會有這問題。
不過在 header file 使用 static 或 anonymous namespace 都不是好習慣,
在 header file 裡開 anonymous namespace 放 functor 也是不正確的做法,
GCC 4.2 以後的行為可能會讓有這些習慣的人大吃一驚,
因為 hidden 的 visibility 屬性會隨 template 參數傳遞下去。
--
Ling-hua Tseng (uranus@tinlans.org)
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://www.tinlans.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.109.33
※ 編輯: tinlans 來自: 118.160.109.33 (09/04 16:36)
推
09/04 17:44, , 1F
09/04 17:44, 1F
→
09/04 17:47, , 2F
09/04 17:47, 2F
推
09/04 18:09, , 3F
09/04 18:09, 3F
→
09/04 18:10, , 4F
09/04 18:10, 4F
→
09/04 19:40, , 5F
09/04 19:40, 5F
→
09/04 19:40, , 6F
09/04 19:40, 6F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章