在编写程序时,经常应用printf()函数来打印一些调试信息,如果调用此函数的地方比较多,那么系统运行时输出这些调试信息占用的时间与空间是相当大的,当系统运行没有故障时,应该把这些调试信息去掉,以节约时间与空间资源,如果只有一处printf调用,那么直接删掉就行了,如果有十处,一百处,甚至一千处调用,又该如何来删掉呢?而且删除这些调试信息时有可能还是部分删除,不是全部删除,如何来控制这种有选择的删除?
*********************************************** 看看我的做法,截取部分代码如下:
//my_dbg.h
//若要开启调试,则定义此宏,否则,注释掉即可, //这样程序中所有my_printf语句自动消失。 //#define MY_DBG
void redundancy(const char *p,...);
#ifndef MY_DBG #define my_printf 1?(void)0:redundancy #else #define my_printf prinf #endif
//my_dbg.c
void redundancy(const char *p,...) { p=p; }
//main.c
int main(void) { my_printf("hahaha~~~");//此处 my_printf等效于printf,可以放心使用。在本例中,此语句没有被编译。 while(1); return 0; } |