加一行註解就可以解的 bug
剛剛在某 repository 裡,看到一筆 commit,只有多加了一行 // 註解,卻確實地解了一個 bug。
這段程式大概長得這樣:
// example last names:
// - 王
// - 許
+ // add extra line of comment to avoid bug
last_name[length] = '\0'; // null terminate the string
printf("last name: %s\n", last_name);
前面有個 + 號的,就是多加的那一行註解。大家有看懂問題在哪裡嘛?:-p



8 Comments
許功蓋問題?
呵呵
"許"的Big5....
又是 許功蓋 惹的禍...
很想叫一些用怪字碼寫comment的coder去撞豆腐,
要就utf-8, 不然就乖乖寫7bit comment
對, big5在我眼中也是怪字碼 XD
前幾天幫人分析他們網站的MySQL Server問題, 我竟然看到用latin存big5資料然後前端掛GPC Auto Quote + iconv 轉成utf-8再ob吐出來, 我的媽啊.
我真是越來越討厭big5了 XD
用 utf8 也沒有多好,還是會碰到鳥蛋問題啊:《Subversion Issue 2332: Keyword expansion in non-UTF8 documents results in mixed charsets》。:-p
C++ 的 string 內容和註解內容應該只有 \x 這種 escape 是安全的吧?
方法一: 無論中英文, 在所有的註解的最後加一個 .
方法二: 寫一個 source analyze , 發現最後一字是 \ 的單 行註解, 發出嚴重警告
不過是單行註解 , 就不應讓 \ 起作用, 這明顯的是 c 的 pre-processor 的bug, 莫非 // 的實作是 macro ???
jeffer,
這就是一般的誤解了。
一般咸認為,C/C++ 程式的編譯,共分兩個階段:preprocessing-time 與 compile-time。這是過於簡化的說法。
事實上,std-c 總共有 8 個 translation phase,std-c++ 總共有 9 個。Std-c 與 std-c++ 兩者都一樣,行尾 \ 的處理,都在 phase 2,而 preprocessing directives 的執行,則都在 phase 4。
見 C99 5.1.1.2 與 C++98 2.1。
Jeff Hung
Post a Comment