情境:

列出時間, function name, line number , 和想加上的 message

 

header file:

#include <stdarg.h>

 

void TESTGetTimeInfo(char *StringTimeInfo,const int SizeTimeInfo);

int TESTLog(char *fmt, ...);

#define TEST_MSG(fmt, args...) do{ \

char TimeInfo[9]; DlnaDmrGetTimeInfo(TimeInfo,sizeof(TimeInfo));\

TESTLog(" (%s) %s:%d: "fmt" .\n",TimeInfo,__FUNCTION__,__LINE__,##args);\

} while(0)

1. 宣告一個計算時間的 function : TESTGetTimeInfo

2. 宣告實際寫 log 的 function : TESTLog

3. define 我要的 debug MACRO : TEST_MSG

3. 使用 do {} while(0) , 看起來比較直觀, 後面不加 ;

4. 注意 fmt 和 args

 

 

c file:

void TESTGetTimeInfo(char *StringTimeInfo,const int SizeTimeInfo)
{
       time_t rawtime;
       struct tm * timeinfo;
       time ( &rawtime );
       timeinfo = localtime ( &rawtime );

       snprintf(StringTimeInfo, (SizeTimeInfo-1), "%d:%d:%d", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
       StringTimeInfo[ (SizeTimeInfo-1) ] = '\0';
}

int TESTLog(char *fmt, ...)
{
       if (fmt != NULL)
       {
              va_list ap;
              va_start(ap, fmt);
              vprintf(fmt, ap);
              va_end(ap);
        }

        return 1;
}

 

 

 

 

 

arrow
arrow
    全站熱搜

    kk 發表在 痞客邦 留言(0) 人氣()