gcc 可以检查 printf 的参数,对于非基本类型的参数,会给个 warning, 但是自己实现的变参函数 gcc 不做检查,这个就需要利用 gcc 的扩展,加个 attribute, 类似下面的

void xlog(LFD *const lfd, const char *fmt, …)
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)))
#endif