#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”,由于續(xù)行符的作用,#define定義時不會發(fā)現(xiàn)注釋符“//”,但是在展開到代碼之后,就成了注釋符“//”了。也就是說,如果你原來的代碼是DbgPrintf("%d",x);,經過這個宏展開后成了//DbgPrintf("%d",x);,相當于自動在前面加了注釋符“//”。要注意的是續(xù)行符下一行的“/”一定要頂格寫,否則就不是“//”了。另外,這個宏只能單獨一行使用,因為它將該行后面的代碼都注釋掉了。