Namespaces
Variants

Funciones variádicas

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de la biblioteca (C++20)
Utilidades del programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación de tres vías
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 

Las funciones variádicas son funciones (p. ej. std::printf) que toman un número variable de argumentos.

Para declarar una función variádica, aparece unipsis después de la lista de parámetros, p. ej. int printf(const char* format...);, que puede ir precedido por una coma opcional. Véase Argumentos variádicos para más detalles sobre la sintaxis, las conversiones automáticas de argumentos y las alternativas.

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

Definido en el encabezado <cstdarg>
habilita el acceso a los argumentos de la función variádica
(macro de función)
accede al siguiente argumento de la función variádica
(macro de función)
(C++11)
hace una copia de los argumentos de la función variádica
(macro de función)
finaliza el recorrido de los argumentos de la función variádica
(macro de función)
almacena la información necesaria para va_start, va_arg, va_end y va_copy
(typedef)

Ejemplo

#include <cstdarg>
#include <iostream>
void simple_printf(const char* fmt...) // C-style "const char* fmt, ..." is also valid
{
    va_list args;
    va_start(args, fmt);
    while (*fmt != '\0')
    {
        if (*fmt == 'd')
        {
            int i = va_arg(args, int);
            std::cout << i << '\n';
        }
        else if (*fmt == 'c')
        {
            // note automatic conversion to integral type
            int c = va_arg(args, int);
            std::cout << static_cast<char>(c) << '\n';
        }
        else if (*fmt == 'f')
        {
            double d = va_arg(args, double);
            std::cout << d << '\n';
        }
        ++fmt;
    }
    va_end(args);
}
int main()
{
    simple_printf("dcff", 3, 'a', 1.999, 42.5); 
}

Salida:

3
a
1.999
42.5

Véase también

Documentación de C para Funciones variádicas