→ kiedveian:看起來 DFS 和 BFS 好像反了? 11/02 15:46
→ linotwo:ret = printf(...); 編譯不過 11/02 15:49
→ EdisonX:疑!有反嗎?DFS 不是找到路就鑽進去嗎? 11/02 15:50
→ EdisonX:@@ 真的是寫反了. 11/02 15:50
→ EdisonX:@linotwo:編譯不過指的是連結 code 沒過嗎?這裡很順 @@ 11/02 15:52
→ EdisonX:方便給個錯誤訊息嗎?謝謝。 11/02 15:53
→ EdisonX:我看懂 linotwo 推文了,指的是 macro 那段, 謝謝提點 :) 11/02 15:55
→ kiedveian:實測結果DFS 334,BFS 322 11/02 16:04
→ linotwo:#define printf // 跟 #define printf 是同樣意思 11/02 16:07
→ kiedveian:另一筆測資DFS 1818,BFS 155 ,應該和測資有關 11/02 16:08
→ EdisonX:@linotwo : 謝謝提點,我再想一下有沒有辦法做 NO_OUTPUT. 11/02 16:12
→ EdisonX:@kiedeian : 謝謝您協助測試.解惑不少. :) 11/02 16:13
推 purpose:preprocessor 不認識 printf 是函式,只有 compiler 才懂 11/02 16:19
一開始真的完全忽略它是函式所帶來之 slide effect .
→ linotwo:要印出訊息的時候把 //#define DEBUG_MSG Uncomment 掉 11/02 16:28
→ kiedveian:fclose(stdout); //不知道會不會有bug, orz... 11/02 16:28
fclose(stdout) 在這篇文章應沒出現,想請教是否是我漏看了?
推 LPH66:comment 那個改成 #define printf(...) 0 這樣應該可行 11/02 16:57
→ LPH66:preprocessor 會把 printf 連括號裡面一堆全部換成 0 這樣 11/02 16:57
→ LPH66:不過話說我在 VC 好像類似的手法行不通 (那時是要拿掉 cerr) 11/02 16:58
→ LPH66:後來是用 #define cerr /##/ 才搞定 11/02 16:58
→ LPH66:已經忘記當初是怎麼想到的這個 hack 了 XD 11/02 16:59
→ maerdimer:char char *Path ... 11/02 17:08
已修正,謝謝指正。
→ linotwo:#define cerr /##/ 如果遇到 } 在同一行的話可能就不行了 11/02 17:57
感謝 LPH66、linotwo 給的建議,後來查一下網路,原來 macro 那段已不算小事,
再擴充下去大概會討論到 dprintf 吧,和原題意相差有點遠了,
或許再開主題做技術性的討論會較恰當。
另想請教的是 #define cerr /##/ 是什麼 ??
初步猜測 /##/ 最後相黏會變 // 吧?是用在 C++ 部份嗎?
cerr << "Hello, world!!"
謝謝各位熱心的賜教
※ 編輯: EdisonX 來自: 180.177.76.161 (11/02 19:28)
→ kiedveian:搞錯問題了…不要理我…… 11/02 19:57
→ letoh:#define printf(...) 0 // 這樣寫可以嗎? 11/03 14:32
推 LPH66:唔, 過了好幾天才想到來回...我那個是 C++ 在用的沒錯 11/06 00:18
→ LPH66:如同上面所言直接 #define xxx // 在 preprocessor 裡會先把 11/06 00:18
→ LPH66:// 拿掉 所以就只是 #define xxx 這樣而已 因此才用/##/ 11/06 00:18
→ LPH66:讓 preprocessor 強迫把 cerr 代換成 // 兩個字再來處理 11/06 00:20
→ LPH66:所以要限制 debug 的東西全部要在同一行且沒有其他東西 11/06 00:21
→ EdisonX:謝謝 LPH66 細心回答 *^_^* 11/06 00:46