Списки аргументов переменных
Объявления функций, в которых в качестве последнего члена списка-объявлений-аргументов указано многоточие (...), могут принимать переменное число аргументов. В таких случаях C++ обеспечивает проверку типа только для явно объявленных аргументов. Переменные списки аргументов можно использовать, если функция должна быть настолько универсальной, что могут изменяться даже количество и типы аргументов. Примером функций, в которых используются переменные списки аргументов, может служить семейство функций printf.
Для доступа к аргументам, следующим после объявленных, используйте макрос, содержащийся в стандартном включаемом файле STDARG.H, как описано в разделе Функции с переменными списками аргументов.
Блок, относящийся только к системам Microsoft
Microsoft C++ допускает указывать многоточие в качестве аргумента, если это последний аргумент и перед многоточием стоит запятая. Поэтому объявление int Func( int i, ... ); допускается, а объявление int Func( int i ... ); — нет.
Завершение блока, относящегося только к системам Microsoft
В объявлении функции, которая принимает переменное число аргументов, требуется по крайней мере один аргумент-местозаполнитель, даже если он не используется. Если этот аргумент-местозаполнитель не указан, доступ к остальным аргументам невозможен.
Если аргументы типа char передаются как переменные аргументы, они преобразуются в тип int. Аналогично, если аргументы типа float передаются как переменные аргументы, они преобразуются в тип double. Для аргументов остальных типов могут выполняться обычные восходящие приведения целочисленных типов и типов с плавающей запятой. Дополнительные сведения см. в разделе Восходящее приведение целочисленных типов.