NDK笔记

Ndk-Log

2017-06-27  本文已影响14人  miaoyongjun

LOG

NDK中自带了Log功能 在 #include <android/log.h> 文件下有一个方法

/*
 * Send a formatted string to the log, used like printf(fmt,...)
 */
int __android_log_print(int prio, const char* tag, const char* fmt, ...)
#if defined(__GNUC__)
#ifdef __USE_MINGW_ANSI_STDIO
#if __USE_MINGW_ANSI_STDIO
    __attribute__((__format__(gnu_printf, 3, 4)))
#else
    __attribute__((__format__(printf, 3, 4)))
#endif
#else
    __attribute__((__format__(printf, 3, 4)))
#endif
#endif
    ;

第一个参数是LOG级别

typedef enum android_LogPriority {
  ANDROID_LOG_UNKNOWN = 0,
  ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
  ANDROID_LOG_VERBOSE,
  ANDROID_LOG_DEBUG,
  ANDROID_LOG_INFO,
  ANDROID_LOG_WARN,
  ANDROID_LOG_ERROR,
  ANDROID_LOG_FATAL,
  ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;

第二个参数是TAG名称

第三个参数是可变参数

在自动生成的代码中,AS会自动帮你定义几个常量

#define LOGI(...) \
  ((void)__android_log_print(ANDROID_LOG_INFO, kTAG, __VA_ARGS__))
#define LOGW(...) \
  ((void)__android_log_print(ANDROID_LOG_WARN, kTAG, __VA_ARGS__))
#define LOGE(...) \
  ((void)__android_log_print(ANDROID_LOG_ERROR, kTAG, __VA_ARGS__))

\ 是换行

前两个是常量

VA_ARGS是c++中的可变参数宏

上一篇下一篇

猜你喜欢

热点阅读