#include <stdio.h>
#include <stdarg.h>
typedef unsigned int u32;
// void printf(const char *fmt, ...)
void MyPrintf(u32 level, const char *pFunName, u32 line, const char *fmt, ...)
{
char buf[256];
va_list ap;
if (level < 1) {
return;
}
va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
printf("[%u %s %u] %s", level, pFunName, line, buf);
}
#define LOG(level, format, ...) MyPrintf(level, __FUNCTION__, __LINE__, format"\r\n", ##__VA_ARGS__)
int main()
{
char *myName0 = "Super Man 0";
char *myName1 = "Super Man 1";
char *myName2 = "Super Man 2";
printf("Hello, World! \n");
LOG(0, "Hello, %s", myName0);
LOG(1, "Hello, %s", myName1);
LOG(2, "Hello, %s", myName2);
return 0;
}
执行结果:
Hello, World!
[1 main 36] Hello, Super Man 1
[2 main 37] Hello, Super Man 2