ExpertiDict

C · Avançado · Português · Técnico

função variádica

/fũˈsɐ̃w vaɾiˈa.dʒi.kɐ/substantivo

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

Veja também

Todos os termos de C