#define LOG_ERROR(s, args...) {\
char _error_log[128];\
sprintf(_error_log, "[Error] at %d in %s(%s) line %d, "s, now_sec.tv_sec,__FILE__, __FUNCTION__, __LINE__, ##args);\
logi(_error_log, "/var/log/error_fh.log");\
printf("\033[31;48m%s\033[0m\n", _error_log);\
}如果传给LOG_ERROR的fmt和args超过128,就会报"Jump to the invalid address stated on the next line"
改大一点儿,比如1024,这样多不了多少内存,也不那么容易遇到怪问题!
本文介绍了一个使用C语言宏定义实现的错误日志记录函数。该函数通过宏展开的方式构建错误信息,并将其写入指定的日志文件中。同时,它还能够将错误信息输出到标准输出流以便于调试。文章指出,当格式化字符串和参数可能导致缓冲区溢出时,应适当增加缓冲区大小。
916

被折叠的 条评论
为什么被折叠?



