Re: [問題] static global 變數 跟 無名的namespac …

看板C_and_CPP (C/C++)作者 (我愛阿蓉)時間16年前 (2009/09/05 03:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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
文章代碼(AID): #1AeMSIvG (C_and_CPP)
文章代碼(AID): #1AeMSIvG (C_and_CPP)