- fprintf / strerror / errno
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libgen.h>
extern int errno;
#define LOG_ERROR(msg) \
do { \
fprintf(stderr, "\033[35m[%s]\033[32m:%d\033[32m:\033[0m %s : %s\n", basename(__FILE__), __LINE__, \
msg, strerror(errno)); \
exit(EXIT_FAILURE); \
}while(0)
void main(void)
{
int i;
for (i=0; i<120; i++)
{
printf("%d : %s\n", i, strerror(i));
}
LOG_ERROR("I am test!");
}
运行结果:
…
注释:
basename : 是linux提供的只获取文件名的接口函数
其中字体颜色的设置可以参考: