16.9 我有个接受 float 的可变参函数, 为什么  va_arg(argp, float) 不工作?

``参数默认晋级" 规则适用于在可变参数中的可变动部分: 参数类型为 float 的总是晋级 (扩展) 到 double, char 和 short int 晋级到 int。所以  va_arg(arpg, float) 是错误的用法。应该总是用  va_arg(arpg, double)。 同理, 要用 va_arg(argp, int) 来取得原来类型是 char, short 或 int 的参数。 基于相同理由, 传给 va_start() 的最后一个 ``固定" 参数项 的类型不会被晋级。参见问题 11.4 和 15.2

参考资料: [ISO, Sec. 6.3.2.2]; [Rationale, Sec. 4.8.1.2]; [H&S, Sec. 11.4 p. 297]。

翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)