In Android 4.0.3, 
I modified the file "system/core/include/cutils/log.h"
I added the code below:/*
 * my log for trace code 
 */
#ifndef MYNO
#define MYNO
static long myNo = 0;
#endif
//
#ifndef MYLOG
#define MYLOG(...)  \
        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "***It's My Log!***  No. %ld: ", myNo); \
        __android_log_print(ANDROID_LOG_ERROR, NULL, __VA_ARGS__); \
        myNo++;
#endifWhen i use logcat -s InputReader to see my log, i can only see:
E/InputReader(  308): ***It's My Log!***  No. 0: 
E/InputReader(  308): ***It's My Log!***  No. 1: Must I change the second __android_log_print: NULL to LOG_CAT?
But I want to see the input events show after the number.I really track the MACRO to know why, but I just can's get the reason.
How can I solve this problem?

解决方案 »

  1.   

    __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "***It's My Log!*** No. %ld: " + __VA_ARGS__, myNo);  
      

  2.   


    "..." + __VA_ARGS__
    两个字符串不能相加的。
    我找到解决办法了,就是仿照__android_log_print重新定义一个MYPRINT:static int MYPRINT(int prio, const char *tag, const char *fmt, ...) {
      va_list ap;  char *my_tag = "***It's My Log!*** No. ";
      int len;  char buf[LOG_BUF_SIZE];
      len = sprintf(buf, "%s%ld: ", my_tag, myNo++);  va_start(ap, fmt);
      vsnprintf(buf+len, LOG_BUF_SIZE-len, fmt, ap);
      va_end(ap);  return __android_log_write(prio, tag, buf);
    }
      

  3.   

    你妹,这是NDK啊。高端 ,求带练级
      

  4.   

    __VA_ARGS__确实就是一个宏,用来代替MYLOG(...)中省略号所表示的参数列表,它会直接替换成实际的参数。我是为了写和看自己的log方便,而定义的MYLOG