Espacios de nombres
Variantes
Acciones

Funciones variádicas

De cppreference.com
< c

Las funciones variádicas son funciones (por ejemplo printf) que toman un número variable de argumentos.

La declaración de una función variádica utiliza una elipsis como último parámetro, por ejemplo int printf(const char* format, ....);. Ver argumentos variádicos para más detalles sobre la sintaxis y las conversiones automáticas de argumentos.

Para acceder a los argumentos variádicos desde el cuerpo de la función se utilizan las siguientes funciones de biblioteca:

Contenido

Macros
Definido en el archivo de encabezado <stdarg.h>
permite el acceso a argumentos de funciones variádicas
(macro de función) [editar]
accede al siguiente argumento de función variádica
(macro de función) [editar]
hace una copia de los argumentos de las funciones variádicas
(macro de función) [editar]
finaliza la transferencia de los argumentos de la función variádica
(macro de función) [editar]
Tipo
contiene la información necesaria para va_start, va_arg, va_end y va_copy
(typedef) [editar]

[editar] Ejemplos

Imprimir valores de diferentes tipos.

#include <stdio.h>
#include <stdarg.h>
 
void simple_printf(const char* fmt, ...)
{
    va_list args;
    va_start(args, fmt);
 
    while (*fmt != '\0') {
        if (*fmt == 'd') {
            int i = va_arg(args, int);
            printf("%d\n", i);
        } else if (*fmt == 'c') {
            // A 'char' variable will be promoted to 'int'
            // A character literal in C is already 'int' by itself
            int c = va_arg(args, int);
            printf("%c\n", c);
        } else if (*fmt == 'f') {
            double d = va_arg(args, double);
            printf("%f\n", d);
        }
        ++fmt;
    }
 
    va_end(args);
}
 
int main(void)
{
    simple_printf("dcff", 3, 'a', 1.999, 42.5); 
}

Salida:

3
a
1.999000
42.50000

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 7.16 Variable arguments <stdarg.h> (p: 269-272)
  • Standard C99 (ISO/IEC 9899:1999):
  • 7.15 Variable arguments <stdarg.h> (p: 249-252)
  • Standard C89/C90 (ISO/IEC 9899:1990):
  • 4.8 VARIABLE ARGUMENTS <stdarg.h>

[editar] Véase también

Documentación de C++ para Funciones variádicas