【发布时间】:2011-09-16 23:51:27
【问题描述】:
我想用vfprintf(FILE * stream, const char * format, va_list arg) 替换fprintf(stderr, "Error occured with file %s\n", file); 中的fprintf 调用,因为fprintf 继承了膨胀。
是否可以使用 vfprintf 而不必为此编写包装函数,例如以某种方式创建 va_list 参数?
【问题讨论】:
-
fprintf本身就是vfprintf的一个非常薄的包装器,因此“fprintf 继承的膨胀”实际上是 vfprintf 之一。否则,您需要解释您认为膨胀的确切原因。 -
我不知道,谢谢。我将我的代码与dietlibc 链接起来,它在编译printf 膨胀时会警告我:
/opt/diet/lib-x86_64/libc.a(vfprintf.o): In function `vfprintf': (.text+0x2e): warning: warning: the printf functions add several kilobytes of bloat.有什么解决方案可以减少膨胀并且没有警告? -
所指的“膨胀”来自整个 printf 家族,包括
vfprintf。避免它的唯一方法是根本不使用字符串格式化函数。