用户通过参数控制输出调试信息的自定义调试函数【C语言】

用户通过参数控制输出调试信息的自定义调试函数【C语言】_第1张图片

在下面的程序中,自定义调试函数有一个等级参数level:

#include

#include /* atoi() */

#include

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",否则将不会输出调试信息。

这个方法的优点是,在正式发布版中包含调试信息也无伤大雅了,因为只需运行时将调试等级配置为0,将不会出现任何调试信息。

例如,运行命令“fact 0” 或直接运行“fact”。

该方法的缺点是效率不太高,因为不管调试信息是否需要输出,都会进行一次函数调用。

若不需要输出调试信息,这次函数调用就多余了。

你可能感兴趣的:(用户通过参数控制输出调试信息的自定义调试函数【C语言】)