Aridad variable en c?

¿Alguien sabe cómo puedo implementar arity variable para funciones en C?

Por ejemplo, una función sumdora:

Suma (1,2,3,4 …); (Toma un número variable de argumentos)

¡Gracias!

Una lista de parámetros variables de ints. Ajuste el tipo según sea necesario:

#include  void myfunc(int firstarg, ...) { va_list v; int i = firstarg; va_start(v, firstarg); while(i != -1) { // do things i = va_arg(v, int); } va_end(v); } 

Debe poder determinar cuándo dejar de leer la variable args. Esto se hace con un argumento de terminación (-1 en mi ejemplo), o conociendo el número esperado de argumentos de alguna otra fuente (por ejemplo, examinando una cadena de formato como en printf).

Si todos los argumentos adicionales son del mismo tipo, también podría pasar una matriz en lugar de usar macros variadic.

Con los literales compuestos de C99 y algo de magia macro, esto puede verse bastante bien:

 #include  #define sum(...) \ sum_(sizeof ((int []){ __VA_ARGS__ }) / sizeof (int), (int []){ __VA_ARGS__ }) int sum_(size_t count, int values[]) { int s = 0; while(count--) s += values[count]; return s; } int main(void) { printf("%i", sum(1, 2, 3)); } 

Echa un vistazo a va_arg y amigos .

Si está intentando implementar funciones de aridad variables, consulte http://www.cprogramming.com/tutorial/lesson17.html para obtener una introducción.