Используется вместо параметра процедуры для
передачи переменного числа аргументов, или как верхняя граница в объявлении
массива для указания, что количество элементов будет определяться
инициализатором.
Синтаксис
Описание
Многоточие (три точки,
...) используется для указания списка
переменных аргументов в декларации или определении процедуры. Первый
аргумент всегда должен быть указан и функция должна вызываться с
С
конвенцией вызова
cdecl. В теле
процедуры,
va_first,
va_arg
и
va_next используются для обработки
переменных аргументов.
В качестве параметров поддерживаются только числовые типы и указатели.
String(строки)
могут передаваться, в этом случае
ZString Ptr
на строковые данные берется.
При использовании многоточия вместо верхней границы в объявлении массива,
верхняя граница устанавливается в соответствии с данными, которые появятся в
expression_list.
Когда многоточие используется таким образом, инициализатор обязателен, и не
может быть
Any.
Использование многоточия в последнем параметре в декларации
#define
или
#macro позволяет создать
вариативный макрос. Это означает, что можно передать любое количество
аргументов
variadic_parameter, который может использоваться в теле,
как будто это был обычный параметр макроса.
variadic_parameter будет
расширяться и полный список аргументов, передаваемых ей, включая запятые ,
также может быть совершенно пустым.
Пример
Declare Function foo cdecl (x As Integer, ...) As Integer
Dim As Integer myarray(0 To ...) = {0, 1, 2, 3}
Print LBound(myarray), UBound(myarray) '' 0, 3
'' Использование вариативного макроса чтобы обернуть
вариативную функцию
#include "crt.bi"
#define eprintf(Format, args...) fprintf(stderr, Format, args)
eprintf(!"Hello from printf: %i %s %i\n", 5, "test", 123)
'' LISP-подобный доступ, позволяющий изменять списки
разделенные запятыми
#define car(a, b...) a
#define cdr(a, b...) b
Отличия от QB
См. также