C语言 巧用宏定义来调试

#include 

//#define DEBUG
#ifdef DEBUG
#define DBG(CODE) CODE
#else
#define DBG(CODE)
#endif


#ifdef DEBUG
#define DbgPrintf printf
#else
#define DbgPrintf /\
/DbgPrintf
#endif

int main()
{       
    DBG(printf("DBG\n");)
    DbgPrintf("DbgPrintf");
    return 0;   
} 
上面代码很简单,只要有学过C语言大家都懂,下面分析下这两行宏定义

#define DbgPrintf /\
/DbgPrintf

这个宏定义实际上是将“DbgPrintf”定义成了“//DbgPrintf”,由于续行符的作用,#define定义时不会发现注释符“//”,但是在展开到代码之后,就成了注释符“//”了。也就是说,如果你原来的代码是DbgPrintf("%d",x);,经过这个宏展开后成了//DbgPrintf("%d",x);,相当于自动在前面加了注释符“//”。要注意的是续行符下一行的“/”一定要顶格写,否则就不是“//”了。另外,这个宏只能单独一行使用,因为它将该行后面的代码都注释掉了。

你可能感兴趣的:(C语言 巧用宏定义来调试)