#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;
}
上面代碼很簡單,只要有學(xué)過C語言大家都懂灾搏,下面分析下這兩行宏定義
#define DbgPrintf /\
/DbgPrintf
這個(gè)宏定義實(shí)際上是將“DbgPrintf”定義成了“//DbgPrintf”泄伪,由于續(xù)行符的作用殴蓬,#define定義時(shí)不會(huì)發(fā)現(xiàn)注釋符“//”,但是在展開到代碼之后蟋滴,就成了注釋符“//”了染厅。也就是說,如果你原來的代碼是DbgPrintf("%d",x);津函,經(jīng)過這個(gè)宏展開后成了//DbgPrintf("%d",x);肖粮,相當(dāng)于自動(dòng)在前面加了注釋符“//”。要注意的是續(xù)行符下一行的“/”一定要頂格寫尔苦,否則就不是“//”了涩馆。另外行施,這個(gè)宏只能單獨(dú)一行使用,因?yàn)樗鼘⒃撔泻竺娴拇a都注釋掉了魂那。