domingo, 24 de agosto de 2008

Número de argumentos variables en C

Para crear un método que acepte un número de argumentos variables en C hay que incluir la cabecera stdarg, una vez incluída podremos acceder a las macros va_start, va_arg y va_end.

va_start acepta como parámetro el último parámetro antes de la lista variable.
va_arg necesita el tipo del parámetro que hay que devolver.
va_end libera los recursos usados para la lectura de parámetros.

#include <stdio.h>
#include <stdarg.h>

int sumatorio(int howmany, ...){
int i;
int total = 0;
va_list ap;

va_start(ap, howmany);

for (i=0; i<howmany; i++)
total+=va_arg(ap, int);

va_end(ap);

return total;
}

int main(){
printf("%d\n", sumatorio(4, 1,2,3,4));
}

0 comentarios: