Re: [問題] static global 變數 跟 無名的namespac …
※ 引述《tinlans ( )》之銘言:
: ※ 引述《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 就不會有這問題。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
T大您好
針對這個我去測試一下
VC8
我在.h寫 namespace {void foo(){}}
.cpp那邊
再次定義 void foo(){}
main裡面呼叫foo就會 compile error說 : 模稜兩可的呼叫多載函式
兩個問題請教
1. 為啥出錯是在呼叫foo才會錯
我不呼叫 難道他就不編譯嘛??
不是很了解原理@@
2. 我這測試是否是您說的情況
謝謝你
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章