使用自定义调试函数debug,控制输出不输出调试信息。
下面的程序中,如果要不输出调试信息,则注释掉#define DEBUG,否则不注释它。
#include <stdio.h>
#define DEBUG
#ifdef DEBUG
#includevoid debug(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
}
#else
void debug(const char *fmt, ...)
{
}
#endif
int fact(int n)
{
int i, f = 1;
for( i=1; i<=n; i++)
{
f *= i;
debug("i=%d ; f=%d\n", i, f);
}
return f;
}
int main()
{
printf( "4!=%d\n", fact(4) );
return 0;
}
这个程序,要输出调试信息时,运行结果如下:
i=1 ; f=1
i=2 ; f=2
i=3 ; f=6
i=4 ; f=24
4!=24
其中前面四行都是调试信息。
如果不输出调试信息,运行结果如下:
4!=24
有的人使用__DEBUG__来代替DEBUG,也是一样的。
用__DEBUG__更安全一些(免得其它不小心用了DEBUG),但用DEBUG方便一些。