a menudo veo una función declarada como esto:En una declaración de función C, ¿qué hace "..." como el último parámetro?
void Feeder(char *buff, ...)
¿qué significa "..." significa?
a menudo veo una función declarada como esto:En una declaración de función C, ¿qué hace "..." como el último parámetro?
void Feeder(char *buff, ...)
¿qué significa "..." significa?
permite una cantidad variable de argumentos de tipo no especificado (como printf
).
que tienen que acceder a ellos con va_start
, va_arg
y va_end
ver http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html para más información
Esto significa que se declare el variadic function.
funciones variadic son funciones que pueden tener un número variable de argumentos y se declaran con una elipsis en lugar del último parámetro. Un ejemplo de dicha función es
printf
.Una declaración típica es
int check(int a, double b, ...);
funciones variadic deben tener al menos un parámetro llamado, por lo que, por ejemplo,
char *wrong(...);
no está permitido en C.
El tres puntos '...' se llaman puntos suspensivos. Su uso en una función hace que la función sea variadic. Usarlos en una declaración de función significa que la función aceptará un número arbitrario de parámetros después de los definidos.
Por ejemplo:
Feeder("abc");
Feeder("abc", "def");
son todas las llamadas de función válidos, sin embargo la siguiente siquiera sería:
Feeder();
función variadic (múltiples parámetros)
#include <stdarg.h>
double average(int count, ...)
{
va_list ap;
int j;
double tot = 0;
va_start(ap, count); //Requires the last fixed parameter (to get the address)
for(j=0; j<count; j++)
tot+=va_arg(ap, double); //Requires the type to cast to. Increments ap to the next argument.
va_end(ap);
return tot/count;
}