情境:
列出時間, 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;
}
留言列表