C语言 巧用宏定义来调试
2017-11-18 本文已影响0人
guanjianhe
#include <stdio.h>
//#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);,相当于自动在前面加了注释符“//”。要注意的是续行符下一行的“/”一定要顶格写,否则就不是“//”了。另外,这个宏只能单独一行使用,因为它将该行后面的代码都注释掉了。