Re: [問題] 請問BCB在有form的情況下

看板Programming作者 (我不會C++)時間18年前 (2007/04/06 08:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
: #ifdef _DEBUG /* ... 省略 ... */ : #else : static void __dbg_printf (const char * format,...) {} : #define DBG 1?((void)(NULL)):__dbg_printf : #endif : 看得出來它讓 _DEBUG 沒定義時,程式中呼叫的 DBG 就完全不做任何事 : 可是為什麼還要特地寫成一個 conditional expression,而且還是絕對成立的 : 這樣有什麼特別用意嗎? : (畢竟此時直接呼叫空白定義版的 __dbg_printf 就已經達到不做事的目的了) #define DBG 1?((void)(NULL)):__dbg_printf 這一行是為了配合文法的正確,防止編譯錯誤發生。 試想DBG的用法,Ex: GDB("this is debug string %c\n", 'A'); 套入GDB的定義變成: 1?((void)(NULL)):__dbg_printf("this is debug string %c\n", 'A'); 以更明白的敘述: if (1) { (void)(NULL); } else { __dbg_printf("this is debug string %c\n", 'A'); } 這在文法上是成立的。 若GDB的定義改為: #define DBG ((void)(NULL)) 以上例,則變成: ((void)(NULL))("this is debug string %c\n", 'A'); /* 錯誤敘述 */ implement空的Debug function方法有好幾種,這是其中一種。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.175.134
文章代碼(AID): #165OuLVS (Programming)
文章代碼(AID): #165OuLVS (Programming)