变量参数列表
如果函数声明中的 argument-declaration-list 的最后成员是省略号 (...),则函数声明可采用数量可变的参数。 在这些情况下,C++ 只为显式声明的参数提供类型检查。 即使参数的数量和类型是可变的,在需要使函数泛化时也可使用变量参数列表。 函数的 printf 系列是一个使用变量参数列表的函数的示例。
若要访问声明后的参数,请使用包含在标准包含文件 STDARG.H 中的宏,如使用变量参数列表的函数中所述。
Microsoft 专用
Microsoft C++ 允许将省略号指定为参数(如果省略号是最后一个参数且在逗号的后面)。 因此,声明 int Func( int i, ... ); 是合法的,但 int Func( int i ... ); 不是合法的。
结束 Microsoft 专用
采用数量可变的参数的函数声明至少需要一个占位符参数(即使不使用它)。 如果未提供此占位符参数,则无法访问其余参数。
当 char 类型的参数作为变量参数进行传递时,它们将被转换为 int 类型。 同样,当 float 类型的参数作为变量参数进行传递时,它们将被转换为 double 类型。 其他类型的参数受常见整型和浮点型提升的限制。 有关详细信息,请参阅整型提升。