老杨威武

导航

 

自定义调试信息的输出

#define CMMB_LOG(format, ...)    mmi_trace("[CMMB] "format" File:%s, Line:%d, Func:%s" , ##__VA_ARGS__, __FILE__, __LINE__ , __FUNCTION__);

#define CMMB_LOG(type, fmt, args...) __android_log_print(type, LOG_TAG, fmt, args)
#define CMMB_INF(fmt, ...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "[%s](%d): " fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)
#define CMMB_ERR(fmt, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "[%s](%d): " fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)
#define CMMB_WRN(fmt, ...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, "[%s](%d): " fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)


1) __VA_ARGS__ 是一个可变参数的宏,宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称

posted on 2012-11-30 14:45  老杨威武  阅读(161)  评论(1编辑  收藏  举报