嗨,我正在为 android 开发新的记录器。在vc版本中我使用这样的日志,
//ref http://stackoverflow.com/questions/8487986/file-macro-shows-full-path
#define CURRENT_FILE_NAME (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
//ref ##VAR things - http://www.delorie.com/gnu/docs/gcc/gcc_44.html
//ref define "" __vars__ something - http://mail-archives.apache.org/mod_mbox/httpd-dev/199710.mbox/%3CPine.LNX.3.95.971028083446.14671A-100000@gaia.vr.net%3E
#define printfAdv(fmt,...)\
{\
printf("[%s] " fmt " ... @(%s)[%s:%d]\n",__TIME__,##__VA_ARGS__,__FUNCTION__,CURRENT_FILE_NAME,__LINE__);\
fflush(stdout);\
}
#define LOGV(fmt,...) \
{\
printfAdv(fmt,__VA_ARGS__);\
}
->[09:59:42] 输入 ... @(processInputKey)[vc_input.cpp:63] 它就像魅力一样。
但是在android中,由于一些错误,它无法构建。
#define InternalLoggerv(...) __android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)
//ref http://stackoverflow.com/questions/8487986/file-macro-shows-full-path
//win for two back slash
#define CURRENT_FILE_NAME (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
//ref ##VAR things - http://www.delorie.com/gnu/docs/gcc/gcc_44.html
//ref define "" __vars__ something - http://mail-archives.apache.org/mod_mbox/httpd-dev/199710.mbox/%3CPine.LNX.3.95.971028083446.14671A-100000@gaia.vr.net%3E
#define printfAdv(fmt,...)\
{\
InternalLoggerv("" fmt " ... @(%s)[%s:%d]\n",##__VA_ARGS__,__FUNCTION__,CURRENT_FILE_NAME,__LINE__);\
}
// fflush(stdout);\
//printf(fmt " ... @(%s)[%s:%d]\n",##__VA_ARGS__,__FUNCTION__,CURRENT_FILE_NAME,__LINE__);\
//printf("[%s] " fmt " ... @(%s)[%s:%d]\n",__TIME__,##__VA_ARGS__,__FUNCTION__,CURRENT_FILE_NAME,__LINE__);\
#define LOGV(fmt,...) \
{\
printfAdv(fmt,__VA_ARGS__);\
}
这会在 LOGV("blah blah"); 不是当 LOGV("%s","blah balhh"); 并且错误说'预期的主表达式','令牌'......
是什么让这与众不同,我如何在 android 本机 deveolopemnt 中使用类似的东西?那你。