Re: [問題] 請問BCB在有form的情況下
※ 引述《wlsabcd.bbs@ptt.cc (我不會C++)》之銘言:
> #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方法有好幾種,這是其中一種。
它的寫法正確我知道,你講的也都對
但是我上一篇問的是
它既然也根據不同條件編譯,而有定義了一個不做事的 __dbg_printf
那何不直接呼叫 __dbg_printf 呢?
(反正當 _DEBUG 沒定義時
程式中的 DBG(...) 就算直接去呼叫 __dbg_printf 也不會做事)
以上是我原本的問題
不過我後來想了一下,大概知道了
既然要真的達到不做事的目的
它寫法的用意應該是要把 function call 所產生的 overhead 都去掉
(既然 call 過去不做事,乾脆不要 call)
這樣子我就能理解了
也謝謝你的回答~
--
@, ●秘密情人● (bbs.cse.ttu.edu.tw)
~\ ◆ Post From: 220-132-114-113.HINET-IP.hinet.net ◆
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章