Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2108514
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: LINUX

2007-04-17 21:27:02

1,(C99)
#ifdef DEBUG
#include
#define debug(fmt, x...) \
do \
{ \
    printf("%s %s(Line %d): "fmt,__FILE__,__FUNCTION__,__LINE__, ##x); \
}while(0)
#else
#define debug(fmt, x...)
#endif
 
2,(C99)
#ifdef DEBUG
#include
#define debug(...) \
do \
{ \
    printf("%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \
    printf(__VA_ARGS__); \
 }while(0)
#else
#define debug(x...)
#endif
 
 
3, 有些平台不支持参数个数可变的函数(对应的宏定义有类似 “...” 的参数),如Symbian。可采用如下的方式定义教通用的debug宏。
#ifdef DEBUG
#include
#define debug(x) \
do \
{ \
    printf("%s %s(Line %d): ",__FILE__,__FUNCTION__,__LINE__); \
    printf x;\
    printf("\n"); \
 }while(0)
#else
#define debug(x)
#endif
 
但是程序中引用宏时, 要使用双括号,比如:
debug(("This is debug message"));
debug(("The value is: %d", 100));
 

4,
#include
#include
void user_printf(const char * format,...)
{
    va_list arg;
   
    va_start(arg,format);
    vprintf(format,arg);
    va_end(arg); 
}
#ifdef DEBUG
#define debug user_printf
#else
#define debug
#endif
 

 
阅读(2422) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~