[閒聊] 字串陣列各元素間少打逗號

看板C_and_CPP作者 (Ar藤)時間14年前 (2011/05/20 19:17), 編輯推噓17(17025)
留言42則, 13人參與, 最新討論串1/3 (看更多)
事情是這樣的 我原本有個char二維陣列 如下 const char cmdName[][30] = {"Conn", "Send", "A15E", "Enter", "Ex", "r slp", "rwake", "printRx" , "a song", "All", }; 後來要改裡面的字 如下 const char cmdName[][30] = {"Conn", "Send", "A15E", "Enter", "Send2" "r slp", "rwake", "printRx" , "a song", "All", }; 結果compile 沒error 也沒warning 就讓我過了 因為以為是別的地方造成錯誤 於是花了我將近2個小時在debug... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.221.195

05/20 19:19, , 1F
"12" "3" 變成 "123" 這常出現
05/20 19:19, 1F

05/20 19:22, , 2F
不過真的很難抓出來... XD
05/20 19:22, 2F

05/20 19:24, , 3F
這件事情告訴我們不要把它寫死在程式裡, 甚至每一項要
05/20 19:24, 3F

05/20 19:24, , 4F
斷行, 完全是習慣誤了你
05/20 19:24, 4F

05/20 19:33, , 5F
明知道寫在程式碼裡面,不好把程式國際化,但就很懶
05/20 19:33, 5F

05/20 19:42, , 6F
推樓上 LOL
05/20 19:42, 6F

05/20 19:45, , 7F
像這種情況"最理想"的做法應該是怎麼樣呢?
05/20 19:45, 7F

05/20 19:47, , 8F
如果幾百年都不會改到這一段, 那寫死就好了, 不過看來
05/20 19:47, 8F

05/20 19:48, , 9F
Linux 好像都存在 PO、MO 檔?Windows 就用 Resource
05/20 19:48, 9F

05/20 19:48, , 10F
並不是, 作成外部設定檔還比較好加新東西, 還有就是像
05/20 19:48, 10F

05/20 19:48, , 11F
或者乾脆簡單點,用文字檔,或者假掰一點,用XML
05/20 19:48, 11F

05/20 19:48, , 12F
p 大說的, 多國語言轉換的問題
05/20 19:48, 12F

05/20 19:52, , 13F
.po (gettext) 很方便啊
05/20 19:52, 13F

05/20 20:46, , 14F
加個函數檢查陣列長度
05/20 20:46, 14F

05/20 21:02, , 15F
我覺得問題是出在 C 的語法允許string literal接在一起
05/20 21:02, 15F

05/20 21:03, , 16F
其它語言就會吐 error 出來了
05/20 21:03, 16F

05/20 21:18, , 17F
寫成ini檔也很方便
05/20 21:18, 17F

05/20 21:34, , 18F
~"~這個讓我想到ssprintf,少打一個',';我也花了兩小時
05/20 21:34, 18F

05/20 21:36, , 19F
以上,這個真的是很令人厭惡的錯誤,每一個逗號都要斷行?
05/20 21:36, 19F

05/20 23:21, , 20F
沒錯! http://goo.gl/NgPPy 這樣就可以發現原PO還有忽
05/20 23:21, 20F

05/20 23:22, , 21F
略最後多一個括號的warning, 這樣做在修改的時候多/少
05/20 23:22, 21F

05/20 23:23, , 22F
幾個括號都是很明顯的差異. 如果覺得長到太難看, 那表
05/20 23:23, 22F

05/20 23:24, , 23F
是這份其實是data檔而不是程式碼檔了! 編譯器為我們作
05/20 23:24, 23F

05/20 23:25, , 24F
的事太多, 其他真的是靠我們自己小心了
05/20 23:25, 24F

05/20 23:27, , 25F
二維以上要突顯結構的話, 還是不要隨意換行
05/20 23:27, 25F

05/20 23:34, , 26F

05/20 23:36, , 27F
強烈懷疑 p 大被盜帳號 XD
05/20 23:36, 27F

05/20 23:40, , 28F
love大的潛台詞我都懂
05/20 23:40, 28F

05/21 00:12, , 29F
看兩遍才知道你想表達是啥 XD
05/21 00:12, 29F

05/21 00:37, , 30F
這...purpose對這廣告台詞感到注意嗎...
05/21 00:37, 30F

05/21 01:12, , 31F
問題出在string literal為什麼要設計可以連在一起= =
05/21 01:12, 31F

05/21 01:20, , 32F
列印程式碼時,每行可放字數有限,利用這個機制就能把長字
05/21 01:20, 32F

05/21 01:21, , 33F
串拆成多個,再讓編譯器自動連結。而且 #define 也可以用
05/21 01:21, 33F

05/21 01:22, , 34F
這個方法,幫忙自動加上一些固定字串
05/21 01:22, 34F

05/21 01:46, , 35F
http://pastie.org/1932751 突然想到這個範例
05/21 01:46, 35F

05/21 01:55, , 36F
樓上正姐
05/21 01:55, 36F

05/21 02:14, , 37F
有一種說法是說「儘量讓錯誤在編譯時期被發現」但如果
05/21 02:14, 37F

05/21 02:15, , 38F
追求「極致可讀性」的話, 很多問題不用編譯就一清二楚
05/21 02:15, 38F

05/21 02:39, , 39F
現在才發現我的錯字...是逗號不是括號
05/21 02:39, 39F

05/21 04:28, , 40F
# 懂,但我想問問那個 $ 是怎麼回事 XD
05/21 04:28, 40F

05/21 09:32, , 41F
致敬某個叫 JavaScript 的語言
05/21 09:32, 41F

05/21 16:02, , 42F
http://codepad.org/sngbexG6 看過有人這樣寫
05/21 16:02, 42F
文章代碼(AID): #1Drat4C1 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Drat4C1 (C_and_CPP)