Namespaces
Variants

Fonctions variadiques

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 

Les fonctions variadiques sont des fonctions (par exemple std::printf) qui prennent un nombre variable d'arguments.

Pour déclarer une fonction variadique, une ellipse apparaît après la liste des paramètres, par exemple int printf(const char* format...);, qui peut être précédée d'une virgule facultative. Voir Arguments variadiques pour plus de détails sur la syntaxe, les conversions automatiques d'arguments et les alternatives.

Pour accéder aux arguments variadiques depuis le corps de la fonction, les facilités de bibliothèque suivantes sont fournies :

Défini dans l'en-tête <cstdarg>
permet d'accéder aux arguments d'une fonction variadique
(macro de fonction)
accède à l'argument suivant d'une fonction variadique
(macro de fonction)
(C++11)
fait une copie des arguments d'une fonction variadique
(macro de fonction)
termine le parcours des arguments d'une fonction variadique
(macro de fonction)
contient les informations nécessaires à va_start, va_arg, va_end et va_copy
(typedef)

Exemple

#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); 
}

Sortie :

3
a
1.999
42.5

Voir aussi

Documentation C pour Fonctions variadiques