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)