Re: [問題] extern const array?

看板C_and_CPP作者 (purpose)時間11年前 (2013/08/20 10:45), 編輯推噓7(7051)
留言58則, 9人參與, 最新討論串3/3 (看更多)
對新手來說是不簡單,畢竟資料給你,很多名詞寫什麼你至少得看懂, 那就只能自己加油看書。 客觀來說,非新手的話,這個問題 "靠自己找到答案" 真的不難。 關鍵在於,你標題就錯了。 不得不說,這是原 PO 測試得不夠用心,應注意未注意。 當我們試著重現此問題時,可以發現: 檔案 1.cpp extern const int i; int main() { int val = 0; val = i; return 0; } 檔案 2.cpp const int i = 7; void foo() { } 進行執行檔建置: (1) cl.exe 1.cpp 2.cpp 1.obj : error LNK2019: 無法解析的外部符號 "int const i" (?i@@3HB) 在函式 _main中被參考 1.exe : fatal error LNK1120: 1 個無法解析的外部符號 (2) gcc 1.cpp 2.cpp 1.cpp:(.text+0x17): undefined reference to `i' collect2.exe: error: ld returned 1 exit status 由此可見,重現此連結錯誤問題,根本不需要 array,多了 array 的參與, 反而轉移大家焦點而已。 -- 要找答案可以如前面推文說的,去翻書。 但其實 google 一下就好了。 http://lmgtfy.com/?q=C%2B%2B+extern+const (第一個 stackoverflow.com 的連結就有答案,BJ4) http://lmgtfy.com/?q=C%2B%2B+%22const%22+documentation (第一或第二個連結會是 MSDN 的文件,進去後沒幾個字,繼續點第一個子連結,BJ4) 跟 const 有關的東西,我承認,即便文件都有記載,也不是每件都廣為人知。 可是就 internal linkage 這個議題,畢竟是從 C 到 C++ 的重大改變, 理論上來說,每個相關文件都會把他擺在很顯眼的位置。 這個問題對非新手來說,很難自己查到答案,是嗎? 生於憂患,死於安樂。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.141.206

08/20 23:31, , 1F
知道為何什麼都google得到嗎 因為同樣的問題貼到
08/20 23:31, 1F

08/20 23:31, , 2F
stackoverflow上不會被嗆而會有人回答
08/20 23:31, 2F

08/20 23:40, , 3F
推樓上
08/20 23:40, 3F
http://www.catb.org/~esr/faqs/smart-questions.html#rtfm 沒有任何一個討論區,會允許同樣的問題被不斷重複, 這之間可以有模糊的地帶,可以是一次、兩次...但不會是每一次都隨便你重複發問。 即便到了 stackoverflow.com 去,爬文、作功課,認真詢問依然是基本的自我要求。 ※ 編輯: purpose 來自: 124.8.129.217 (08/21 00:06)

08/21 00:28, , 4F
這問題在板上有被問過?
08/21 00:28, 4F

08/21 00:40, , 5F
爬文、作功課的目的是在於,盡量尊重別人的討論權益
08/21 00:40, 5F

08/21 00:41, , 6F
特別是BBS這種新主題會蓋過舊主題的地方。如果你的問題
08/21 00:41, 6F

08/21 00:41, , 7F
自己查書或Google真的不難查到,為什麼不把首頁的曝光留他
08/21 00:41, 7F

08/21 00:42, , 8F
留給其他真的求助無門的人呢?這樣不也是自私的行為
08/21 00:42, 8F

08/21 00:46, , 9F
google看看SO上別人怎麼說吧 http://ppt.cc/zVbM
08/21 00:46, 9F

08/21 00:49, , 10F
原po那問題也不是說很簡單 大家討論看看有何不妥
08/21 00:49, 10F

08/21 00:57, , 11F
推A大
08/21 00:57, 11F

08/21 01:53, , 12F
換個角度想,為什麼我們會回答呢?我們天生知道答案?
08/21 01:53, 12F

08/21 01:54, , 13F
當然不是。我也當過新手,也當過問問題的人
08/21 01:54, 13F

08/21 01:55, , 14F
小心被丟大絕: 不爽不要回答.
08/21 01:55, 14F

08/21 01:55, , 15F
然後開始念書、google、寫更多程式、然後開始回答問題
08/21 01:55, 15F

08/21 01:56, , 16F
如果板上的討論無法讓問問題的人成長為回答問題的人
08/21 01:56, 16F

08/21 01:57, , 17F
那實在一點意義也沒有,根本沒必要回答
08/21 01:57, 17F

08/21 01:57, , 18F
purpose少說了一句:沒有討論區會允許永遠的新手
08/21 01:57, 18F

08/21 01:59, , 19F
寫程式寫了四五年還在問新手問題,那根本是懶得成長
08/21 01:59, 19F

08/21 02:02, , 20F
沒有人生下來就會寫程式的,能有一番成果都是因為付出過
08/21 02:02, 20F

08/21 02:02, , 21F
時間去努力。那麼憑什麼有人可以敲敲鍵盤就要求別人把自
08/21 02:02, 21F

08/21 02:03, , 22F
己努力的成果分享出來?
08/21 02:03, 22F

08/21 02:08, , 23F
一個會被入門書擺在 "The Basic" 的語言特性,對於在這個
08/21 02:08, 23F

08/21 02:09, , 24F
板已經混了超過四年的人來說還不夠簡單,那還有什麼是簡
08/21 02:09, 24F

08/21 02:09, , 25F
單的?
08/21 02:09, 25F

08/21 06:02, , 26F
在 keil 編譯器實驗了一下 行為相同。
08/21 06:02, 26F

08/21 08:46, , 27F
我回這篇最初目的,就是因為很多人說這個const問題不簡單
08/21 08:46, 27F

08/21 08:46, , 28F
那麼內文打這麼多,我也說明了,他好好測試不要把array也
08/21 08:46, 28F

08/21 08:47, , 29F
混進問題裡的話,去google不用十分鐘就看完答案收工
08/21 08:47, 29F

08/21 08:48, , 30F
就算翻書查const也花不了半小時,到底你要堅持不簡單多久
08/21 08:48, 30F

08/21 11:32, , 31F
底下那篇svn的問題 我google一下也不用一分鐘
08/21 11:32, 31F

08/21 11:34, , 32F
google得到不代表不值得回答
08/21 11:34, 32F

08/21 15:10, , 33F
原PO的問題,purpose板友回答了,我也回答了。那麼樓上回
08/21 15:10, 33F

08/21 15:11, , 34F
答了什麼?要慷慨分享可以,請慷自己慨,不要慷別人的慨
08/21 15:11, 34F

08/21 17:35, , 35F
樓上覺得我都沒有回答? 拜託回去看一下推文 XD
08/21 17:35, 35F

08/21 17:43, , 36F
p板友本來不懂為什麼const會變internal 我回答了
08/21 17:43, 36F

08/21 17:50, , 37F
那很好啊
08/21 17:50, 37F

08/21 17:54, , 38F
既然你特地為了我回答,那就謝謝了。不過我說莫名其妙只是
08/21 17:54, 38F

08/21 17:55, , 39F
表達不認同而已。如果是為了int arr[num];這種的define
08/21 17:55, 39F

08/21 17:56, , 40F
anonymous namespaces我認為是比較好的作法,因為他可以讓
08/21 17:56, 40F

08/21 17:57, , 41F
C語言使用者看出多了namespace,而不必被逼著去記說
08/21 17:57, 41F

08/21 17:58, , 42F
C++的const跟C的const不一樣,這只是增加負擔
08/21 17:58, 42F

08/24 18:07, , 43F
推1樓,所以我寫程式這麼久,幾乎不問問題的,因為不知道
08/24 18:07, 43F

08/24 18:09, , 44F
什麼時候會被噓. 不過我也常逛討論區,也常重被噓的文章得到
08/24 18:09, 44F

08/24 18:10, , 45F
啟發 "從"
08/24 18:10, 45F

08/24 18:13, , 46F
忽然想到國中的時候,班上有一個同學,常常舉手問老師問題
08/24 18:13, 46F

08/24 18:14, , 47F
時間一久,他一舉手,很多人發出"唉"(又來了)的聲音
08/24 18:14, 47F

08/24 18:15, , 48F
我後來也覺得他有點煩,有一天,他忽然再也不問問題了
08/24 18:15, 48F

08/24 18:16, , 49F
一開始大家都覺得輕鬆了,但最後我發現他以前問問題時
08/24 18:16, 49F

08/24 18:18, , 50F
雖然有些問題表面看起來很白癡,但其實會學到想不到的東西
08/24 18:18, 50F

08/24 18:21, , 51F
現在,有時候真心覺得那些嗆人的推文,反而比所謂的爛問題,
08/24 18:21, 51F

08/24 18:21, , 52F
浪費我更多時間
08/24 18:21, 52F
比如像這樣嗎 國立 XX 大學資訊工程系,資料結構 老師:「大家有問題嗎?」 同學A:「老師,指標不太懂,可以再講一遍嗎?」 老師:「好問題,指標很重要,我再解釋一遍……」 老師:「還有問題嗎?」 同學B:「老師,什麼是 struct, class?幹嘛用的?」 (回答……) 同學C:「老師,函數要怎麼寫?」 (回答……) 同學D:「老師,陣列可以解釋一下嗎?」 同學E:「老師,CPU、記憶體位址是什麼?」 同學F:「老師,那 codeblocks 要怎麼裝?都英文……」 同學G:「老師,十六進位也可以教一下嗎?」 同學H:「老師,要怎麼開專案,進入那個 Debugger 畫面?」 ※ 編輯: purpose 來自: 124.8.141.96 (08/24 21:54)

08/25 01:19, , 53F
啊哈哈 感覺應該跟他說的有點差別啦~
08/25 01:19, 53F

08/25 01:20, , 54F
有些人只是想知道怎麼用 有些人想知道為什麼這樣設計
08/25 01:20, 54F

08/25 01:20, , 55F
不過良好的問題習慣還是要建立 不過在課堂上沒有那麼多的
08/25 01:20, 55F

08/25 01:21, , 56F
思考跟反應時間 有時可能是一時鑽牛角尖就問了
08/25 01:21, 56F

08/25 01:22, , 57F
所以有些老師的課 會要學生去預習 唉,互相教學相長吧~
08/25 01:22, 57F

08/25 01:22, , 58F
長的不只是知識,更是學習方法
08/25 01:22, 58F
文章代碼(AID): #1I4jXcay (C_and_CPP)
文章代碼(AID): #1I4jXcay (C_and_CPP)