android有时候我们需要在c文件中,自己定义打印的格式,那我们可以使用宏,下面我举个在adbd中自己打印的log宏
#if !ADB_HOST
# define LOG(...) \
do { \
__android_log_print( \
ANDROID_LOG_INFO, \
"adbd", \
__VA_ARGS__ ); \
} while (0)
#else
#define LOG(...) ((void)0)
#endif /* !ADB_HOST */
这里的adbd代表是LOG的TAG,__VA_ARGS__ 代表是可变的参数,ANDROID_LOG_INFO代表打印的等级
如何使用呢?
LOG("%s: A_SYNC send_packet\n", __FUNCTION__);
使用的使用我们可以把参数__FUNCTION__作为传参,这个参数代表当前函数的字符串。
当然我们也可以想办法把__FUNCTION__加入到宏,而不是在用的时候用它。