Fonctions variadiques
Depuis fr.cppreference.net
< cpp | utilitaire
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
Exécuter ce code
#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
|