
使用自定義調(diào)試函數(shù)debug,控制輸出不輸出調(diào)試信息。
下面的程序中,如果要不輸出調(diào)試信息,則注釋掉#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;
}
這個(gè)程序,要輸出調(diào)試信息時(shí),運(yùn)行結(jié)果如下:
i=1 ; f=1
i=2 ; f=2
i=3 ; f=6
i=4 ; f=24
4!=24
其中前面四行都是調(diào)試信息。
如果不輸出調(diào)試信息,運(yùn)行結(jié)果如下:
4!=24
有的人使用__DEBUG__來代替DEBUG,也是一樣的。
用__DEBUG__更安全一些(免得其它不小心用了DEBUG),但用DEBUG方便一些。