原本这个会很多,结果在网上一搜却没有,就赶紧把过老师讲的记下来,以备后用。
#define LOG(s) do{ \
time_t t; \
struct tm* ti; \
time(&t); \
ti = localtime(&t); \
printf("%s[%s: %d] %s\n", asctime(ti), __FILE__, __LINE__, s); \
}while(0)
完整使用例子:
#include <stdio.h>
#include <time.h>
#define LOG(s) do{ \
time_t t; \
struct tm* ti; \
time(&t); \
ti = localtime(&t); \
printf("%s[%s: %d] %s\n", asctime(ti), __FILE__, __LINE__, s); \
}while(0)
void f()
{
LOG("Enter f() ...");
LOG("Exit f()...");
}
int main()
{
LOG("Enter main() ... ");
f();
LOG("Exit main() ... ");
return 0;
}
# ./a.out
Mon Dec 31 16:43:50 2012
[hello.c: 19] Enter main() ...
Mon Dec 31 16:43:50 2012
[hello.c: 14] Enter f() ...
Mon Dec 31 16:43:50 2012
[hello.c: 15] Exit f()...
Mon Dec 31 16:43:50 2012
[hello.c: 23] Exit main() ...
以上的基于系统的很好用,如果在u-boot中或者在裸机程序中就不那么好用了,可以简单的使用这个:
#ifdef DEBUG
#define debug(fmt,args...) printf (fmt ,##args)
#define debugX(level,fmt,args...) if (DEBUG>=level) printf(fmt,##args);
#else
#define debug(fmt,args...)
#define debugX(level,fmt,args...)
#endif /* DEBUG */