看板Programming
标 题Re: [问题] 请问BCB在有form的情况下
发信站秘密情人资讯站 (Fri Apr 6 22:27:49 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!SecretLover
※ 引述《[email protected] (我不会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 ◆