→ loveme00835:能知道你講的是什麼東西, 因為可能變成靜態區域變數 09/02 00:21
推 QQ29:const *msg只是說你這指標指到的位址 值不能被改耶 09/02 00:23
→ loveme00835:「是在public中的struct Man內所宣告」雖然我可以大概 09/02 00:23
→ QQ29:指到哪是你控制的吧 09/02 00:24
→ loveme00835:想像你的layout, 不過宣告跟定義是不同的東西 09/02 00:24
→ loveme00835:修正2樓 : internal linkage global variable 09/02 00:37
推 QQ29:l大不懂你推的那個英文啥意思...但確實可以更改指到哪吧? 09/02 01:01
→ QQ29:又不是 char *const msg.... 09/02 01:02
→ loveme00835:我不知道他是用 char const * 來算還是用 Man 來算, 09/02 01:04
→ loveme00835:同名物件還是三個不同物件, 因為原po說的「宣告」很可 09/02 01:05
→ loveme00835:能是多個宣告一份定義, 也可能是多個定義 09/02 01:05
推 QQ29:那l大可否請教你寫的那專有詞是什麼意思呀 想學一下 09/02 01:06
→ loveme00835:如果是同名的多份定義, 連結時一定衝到, 但是如果採 09/02 01:09
→ loveme00835:static 的方式定義, 那不同份的定義影響範圍只在該檔 09/02 01:09
推 QQ29:就是static修飾字再做的事叫做internal linkage? 09/02 01:10
→ loveme00835:, 彼此看不見對方的那份, 這是具有internal linkage 09/02 01:10
→ loveme00835:的變數 09/02 01:10
→ loveme00835:對全域的變數來講, 是有這種效果, 函式內的不同 09/02 01:11
→ loveme00835:推了那麼多還是沒看到code = __ = 09/02 01:12
→ QQ29:external linkage阿? 還有分喔~~ 09/02 01:12
→ QQ29:因為我之前有發一篇問說 const寫在.h 給大家include不會re 09/02 01:13
→ QQ29:define..難道是c++才會降? c 會redefine? 09/02 01:13
→ loveme00835:想像不同使用者都引入 test_const.h 這個標頭檔, 分開 09/02 01:21
→ loveme00835:編譯, 編譯器勢必要想辦法配置字串的空間再讓指標指向 09/02 01:22
→ loveme00835:那塊空間的起始位置, 不過再把多個目的檔連結起來就產 09/02 01:23
→ loveme00835:生問題了, 因為這麼多的"Testing"字串, 讓他不曉得應 09/02 01:25
→ loveme00835:該指向哪裡, 所以這裡比較好的方法就是讓他具有 09/02 01:27
→ hilorrk:回QQ29 const在純C是external linkage..這樣寫會redefine 09/02 01:27
→ loveme00835:internal linkage, 直接指向各自檔案內配置的空間 09/02 01:28
→ loveme00835:C 語言我不太清楚 0.0 但就你貼的網址來說, 重點在「 09/02 01:35
→ loveme00835:配置的空間何在」而不是「有沒有const」 09/02 01:36
→ hilorrk:不過C字串使用internal linkage也導致不能用作nontype 09/02 01:50
→ hilorrk:template param的arg...不知C++0x有沒有改進這點@@? 09/02 01:50
→ loveme00835:提案中看起來是沒有喔! > < 09/02 02:11
→ loveme00835:是複製貼上的動作, 所以分開編譯的話實際上是有3份不 09/02 02:23
→ loveme00835:一樣的a, 所在的位址也不一樣 09/02 02:24