看板 C_and_CPP 關於我們 聯絡資訊
對新手來說是不簡單,畢竟資料給你,很多名詞寫什麼你至少得看懂, 那就只能自己加油看書。 客觀來說,非新手的話,這個問題 "靠自己找到答案" 真的不難。 關鍵在於,你標題就錯了。 不得不說,這是原 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
AntaresStar:知道為何什麼都google得到嗎 因為同樣的問題貼到 08/20 23:31
AntaresStar:stackoverflow上不會被嗆而會有人回答 08/20 23:31
purincess:推樓上 08/20 23:40
http://www.catb.org/~esr/faqs/smart-questions.html#rtfm 沒有任何一個討論區,會允許同樣的問題被不斷重複, 這之間可以有模糊的地帶,可以是一次、兩次...但不會是每一次都隨便你重複發問。 即便到了 stackoverflow.com 去,爬文、作功課,認真詢問依然是基本的自我要求。 ※ 編輯: purpose 來自: 124.8.129.217 (08/21 00:06)
AntaresStar:這問題在板上有被問過? 08/21 00:28
purpose:爬文、作功課的目的是在於,盡量尊重別人的討論權益 08/21 00:40
purpose:特別是BBS這種新主題會蓋過舊主題的地方。如果你的問題 08/21 00:41
purpose:自己查書或Google真的不難查到,為什麼不把首頁的曝光留他 08/21 00:41
purpose:留給其他真的求助無門的人呢?這樣不也是自私的行為 08/21 00:42
AntaresStar:google看看SO上別人怎麼說吧 http://ppt.cc/zVbM 08/21 00:46
AntaresStar:原po那問題也不是說很簡單 大家討論看看有何不妥 08/21 00:49
suhorng:推A大 08/21 00:57
littleshan:換個角度想,為什麼我們會回答呢?我們天生知道答案? 08/21 01:53
littleshan:當然不是。我也當過新手,也當過問問題的人 08/21 01:54
loveme00835:小心被丟大絕: 不爽不要回答. 08/21 01:55
littleshan:然後開始念書、google、寫更多程式、然後開始回答問題 08/21 01:55
littleshan:如果板上的討論無法讓問問題的人成長為回答問題的人 08/21 01:56
littleshan:那實在一點意義也沒有,根本沒必要回答 08/21 01:57
littleshan:purpose少說了一句:沒有討論區會允許永遠的新手 08/21 01:57
littleshan:寫程式寫了四五年還在問新手問題,那根本是懶得成長 08/21 01:59
saxontai:沒有人生下來就會寫程式的,能有一番成果都是因為付出過 08/21 02:02
saxontai:時間去努力。那麼憑什麼有人可以敲敲鍵盤就要求別人把自 08/21 02:02
saxontai:己努力的成果分享出來? 08/21 02:03
saxontai:一個會被入門書擺在 "The Basic" 的語言特性,對於在這個 08/21 02:08
saxontai:板已經混了超過四年的人來說還不夠簡單,那還有什麼是簡 08/21 02:09
saxontai:單的? 08/21 02:09
damody:在 keil 編譯器實驗了一下 行為相同。 08/21 06:02
purpose:我回這篇最初目的,就是因為很多人說這個const問題不簡單 08/21 08:46
purpose:那麼內文打這麼多,我也說明了,他好好測試不要把array也 08/21 08:46
purpose:混進問題裡的話,去google不用十分鐘就看完答案收工 08/21 08:47
purpose:就算翻書查const也花不了半小時,到底你要堅持不簡單多久 08/21 08:48
AntaresStar:底下那篇svn的問題 我google一下也不用一分鐘 08/21 11:32
AntaresStar:google得到不代表不值得回答 08/21 11:34
saxontai:原PO的問題,purpose板友回答了,我也回答了。那麼樓上回 08/21 15:10
saxontai:答了什麼?要慷慨分享可以,請慷自己慨,不要慷別人的慨 08/21 15:11
AntaresStar:樓上覺得我都沒有回答? 拜託回去看一下推文 XD 08/21 17:35
AntaresStar:p板友本來不懂為什麼const會變internal 我回答了 08/21 17:43
saxontai:那很好啊 08/21 17:50
purpose:既然你特地為了我回答,那就謝謝了。不過我說莫名其妙只是 08/21 17:54
purpose:表達不認同而已。如果是為了int arr[num];這種的define 08/21 17:55
purpose:anonymous namespaces我認為是比較好的作法,因為他可以讓 08/21 17:56
purpose:C語言使用者看出多了namespace,而不必被逼著去記說 08/21 17:57
purpose:C++的const跟C的const不一樣,這只是增加負擔 08/21 17:58
xxxzzz:推1樓,所以我寫程式這麼久,幾乎不問問題的,因為不知道 08/24 18:07
xxxzzz:什麼時候會被噓. 不過我也常逛討論區,也常重被噓的文章得到 08/24 18:09
xxxzzz:啟發 "從" 08/24 18:10
xxxzzz:忽然想到國中的時候,班上有一個同學,常常舉手問老師問題 08/24 18:13
xxxzzz:時間一久,他一舉手,很多人發出"唉"(又來了)的聲音 08/24 18:14
xxxzzz:我後來也覺得他有點煩,有一天,他忽然再也不問問題了 08/24 18:15
xxxzzz:一開始大家都覺得輕鬆了,但最後我發現他以前問問題時 08/24 18:16
xxxzzz:雖然有些問題表面看起來很白癡,但其實會學到想不到的東西 08/24 18:18
xxxzzz:現在,有時候真心覺得那些嗆人的推文,反而比所謂的爛問題, 08/24 18:21
xxxzzz:浪費我更多時間 08/24 18:21
比如像這樣嗎 國立 XX 大學資訊工程系,資料結構 老師:「大家有問題嗎?」 同學A:「老師,指標不太懂,可以再講一遍嗎?」 老師:「好問題,指標很重要,我再解釋一遍……」 老師:「還有問題嗎?」 同學B:「老師,什麼是 struct, class?幹嘛用的?」 (回答……) 同學C:「老師,函數要怎麼寫?」 (回答……) 同學D:「老師,陣列可以解釋一下嗎?」 同學E:「老師,CPU、記憶體位址是什麼?」 同學F:「老師,那 codeblocks 要怎麼裝?都英文……」 同學G:「老師,十六進位也可以教一下嗎?」 同學H:「老師,要怎麼開專案,進入那個 Debugger 畫面?」 ※ 編輯: purpose 來自: 124.8.141.96 (08/24 21:54)
damody:啊哈哈 感覺應該跟他說的有點差別啦~ 08/25 01:19
damody:有些人只是想知道怎麼用 有些人想知道為什麼這樣設計 08/25 01:20
damody:不過良好的問題習慣還是要建立 不過在課堂上沒有那麼多的 08/25 01:20
damody:思考跟反應時間 有時可能是一時鑽牛角尖就問了 08/25 01:21
damody:所以有些老師的課 會要學生去預習 唉,互相教學相長吧~ 08/25 01:22
damody:長的不只是知識,更是學習方法 08/25 01:22