免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2012 | 回复: 8
打印 上一主题 下一主题

[C] 这个怎么实现,用来简单的调试的。:) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-20 16:21 |只看该作者 |倒序浏览
我现在是这样来在我程序中进行打印调试信息的。
int debug = 1;  // 0 means off; 1 means on.

void func()
{
        if (debug)
                printf("x is now %d\n", x);
}

有没有一种大概如下的方法

int debug = 1;

#define log(...) _log(__VA_ARGS__)

_log(char *fmt, ...)
{
        //请问一下,这里怎么实现?谢谢。
}

void func()
{
        log("%x is now %d\n", x);
}

请问一下_log函数怎么实现?谢谢。

论坛徽章:
0
2 [报告]
发表于 2010-12-20 16:26 |只看该作者
本帖最后由 zang232 于 2010-12-20 16:28 编辑

用 log4c 吧!有兴趣读下源码~~很悍。。。

论坛徽章:
0
3 [报告]
发表于 2010-12-20 20:04 |只看该作者
if( debug ) {
  va_list va;
  va_start( va, fmt );
  vprintf( fmt, va );
  va_end( va );
}

论坛徽章:
0
4 [报告]
发表于 2010-12-20 20:18 |只看该作者
void error( char *fmt, ... ) {
      va_list args;
      
      va_start( args, fmt );
      fprintf( stderr, "Error: " );
      vfprintf( stderr, fmt, args );
      fprintf( stderr, "\n" );
      va_end( args );
      exit( 1 );
    }

可以参考这个 试试

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2010-12-21 09:15 |只看该作者
可变参数的实现。

论坛徽章:
0
6 [报告]
发表于 2010-12-21 11:39 |只看该作者
lz就是想在调试的时候打印调试信息,运行的时候不要调试信息
你可以这样
在文件中定义
  1. #ifdef DEBUG
  2.         #define MPRINTF(fmt,args...)  \
  3.                 do { \
  4.                         printf( "%s: " fmt,args);\
  5.                 } while (0)
  6. #else
  7.         #define MPRINTF(fmt,args...)
  8. #endif
复制代码
在编译的时候加上-DDEBUG 或者在代码里加上#define DEBUG

代码中的printf用MPRINTF代替

论坛徽章:
0
7 [报告]
发表于 2010-12-21 11:47 |只看该作者
可变参数,日志系统都这样的,再加上分级

论坛徽章:
0
8 [报告]
发表于 2010-12-21 11:48 |只看该作者
记得fflush。。。

论坛徽章:
0
9 [报告]
发表于 2010-12-21 15:46 |只看该作者
还是C++的 << 来得爽

一般就用个ostringstream
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP