在下面的程序中,自定义调试函数有一个等级参数level:
#include <stdio.h>
#include <stlib.h>/* atoi() */
#include <starg.h>
int debug_level;
void debug(int level, const char *fmt, ...)
{
if( level <= debug_level )
{
va_list ap;
va_start(ap, fmt);
vprintf(fmt, ap);
va_end(ap);
}
}
int fact(int n)
{
int i, f = 1;
for( i=1; i<=n; i++)
{
f *= i;
debug(250, "i=%d ; f=%d\n", i, f);
}
return f;
}
int main(int argc, char *argv[])
{
if ( argc < 2 )
{
debug_level = 0;
}
else
{
debug_level = atoi(argv[1]);
}
printf( "4!=%d\n", fact(4) );
return 0;
}
用命令(设上面的程序文件名为fact.c):
gcc -o fact fact.c
则若需要输出调试信息,只需要指定调试等级不低于250即可,
如运行命令"fact 250",否则将不会输出调试信息。