曉得為什麼程式碼裏常常有 #if 0 .... #endif

放輕鬆,這個版純聊天不談技術,歡迎大家進來坐坐。

曉得為什麼程式碼裏常常有 #if 0 .... #endif

文章Drake » 週三 3月 16, 2005 10:35 am

以前看一些 codes 時,總會在很多地方看到
代碼: 選擇全部
#if 0
blah blah...
blah blah...
blah blah again.....
#endif

等到自己開始在 Linux 下寫程式時
才發現自己也用起來了 #if 0 ... #endif

一來,不是每個人都有很方便且習慣的 editor 可以幫你作
block comment/uncomment
二來,如果使用 c 的 /* */
那只要被包住的 code 中間也有 /* */ 就會爛掉了

真是種有趣的經驗

ps. 現在在努力和 vlc 的 source code 奮戰中 :-?
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am

文章Tetralet » 週三 3月 16, 2005 10:53 am

好好玩,原來還有這招呀?

我覺得,程式設計師的思維可真是難以猜透呀…(笑)
時間並不能治療我心中的疼痛
南方的春天說什麼也溫暖不了我冰冷的血

誦唱大復活咒文,今天的 Tetralet 又在唧唧喳喳了 重生!
Tetralet
俺是博士
俺是博士
 
文章: 3078
註冊時間: 週四 11月 28, 2002 3:02 pm

文章twu2 » 週三 3月 16, 2005 11:39 am

有好有壞吧.
用起來比較簡單, 但是在一些支援語法功能的編輯器上頭, 容易出問題.
twu2
懵懂的國中生
懵懂的國中生
 
文章: 219
註冊時間: 週二 3月 11, 2003 2:58 pm
來自: Taipei

Re: 曉得為什麼程式碼裏常常有 #if 0 .... #endif

文章訪客 » 週三 3月 16, 2005 4:03 pm

這招還滿方便的, 尤其是在 須要修改的code 彼此有所關連

比如說 在 A site 要有某些function 或data
但在 B site 不需要 (通常是跨平台). 程式碼 橫跨數個function 但 若用 comment mark 到時後compile 完 下次要切換成 另一版本得要一個一個uncomment 很麻煩. 所以常會定 個名稱,比如說
代碼: 選擇全部
#ifdef __name__
// do something
#endif

然後compile時改變參數即可.
這個問題也曾在java 上吵了一段時間.
後來據說 官方的建議是 用
代碼: 選擇全部
if (doItorNot()==true)  {
doSomthing();
}

然後由外部(e.g.,從某個設定檔讀入)判斷 該條件是否成立.

Drake 寫:以前看一些 codes 時,總會在很多地方看到
代碼: 選擇全部
#if 0
blah blah...
blah blah...
blah blah again.....
#endif

等到自己開始在 Linux 下寫程式時
才發現自己也用起來了 #if 0 ... #endif

一來,不是每個人都有很方便且習慣的 editor 可以幫你作
block comment/uncomment
二來,如果使用 c 的 /* */
那只要被包住的 code 中間也有 /* */ 就會爛掉了

真是種有趣的經驗

ps. 現在在努力和 vlc 的 source code 奮戰中 :-?
訪客
 

文章訪客 » 週五 3月 18, 2005 11:06 am

#if 0~~~#endif
的確是好壞參半

  • 一來,還沒看到有會對它特別處理的 editor or IDE (ex, highlighter, folding)。
  • 二來,當你在原來就很龐大的 project 上動手腳,試驗新增一些功能或是修改一些 bug 時,但又不想手動註解掉一大段原來的 code 或是就刪了它的話,那 #if 0 還不錯用。
  • 不過它有個麻煩處,如果包的範圍太大,超過你一次可以看到的範圍的話(ex, 40行!!),那你可能不小心 grep + find or replace 進裏頭了,卻還不曉得,導致你改了一些 code,卻發現一直沒有在 make 出來的執行檔上反應出來 :-P

多年後才了解 #if 0 的用意與背景,突然覺得 programmer 之路又變長了些了 :mygod:
訪客
 

文章kanru » 週五 3月 18, 2005 3:46 pm

Anonymous 寫:#if 0~~~#endif
的確是好壞參半
[list][*]一來,還沒看到有會對它特別處理的 editor or IDE (ex, highlighter, folding)。

有的,vim 會把 #if 0 ~~ #endif 裡面的程式碼以較暗的方式顯示喔 ;-)
圖檔
頭像
kanru
榮譽學長
榮譽學長
 
文章: 578
註冊時間: 週六 7月 12, 2003 12:09 pm

文章Drake » 週二 3月 22, 2005 1:12 pm

vim 果然是為 programmer 而寫的 :mygod:
後來發覺 kdevelop3 也有,看來是不少 editor 都有
可惜我常用的 joe 沒有 :-P
Drake
活潑的高中生
活潑的高中生
 
文章: 314
註冊時間: 週三 3月 26, 2003 11:00 am


回到 talk

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客