C · Avançado · Português · Técnico
função variádica
Função declarada com reticências no final, como int soma(int n, ...), que aceita número variável de argumentos. Eles são lidos com va_list, va_start, va_arg e va_end, de stdarg.h.
Onde usar
printf é o exemplo clássico. O compilador não checa os tipos dos argumentos extras, então erros de formato viram comportamento indefinido; o atributo format do gcc ajuda.
Em código
#include <stdarg.h>
int soma(int n, ...) {
va_list ap; int t = 0;
va_start(ap, n);
while (n--) t += va_arg(ap, int);
va_end(ap);
return t;
}Exemplos
O printf é uma função variádica, por isso o formato precisa bater.
Na função variádica, passei a quantidade como primeiro argumento.
Cuidado
Presumir que a função sabe quantos argumentos vieram e de que tipo: o chamador precisa informar por contagem ou formato.
Sinônimos
variadic function