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) |