Variadische Funktionen
Von de.cppreference.net
< cpp | Dienstprogramme
Variadische Funktionen sind Funktionen (z.B. std::printf), die eine variable Anzahl von Argumenten entgegennehmen.
Um eine variadische Funktion zu deklarieren, erscheint eine Ellipse nach der Liste der Parameter, z.B. int printf(const char* format...);, der ein optionales Komma vorausgehen kann. Siehe Variadische Argumente für weitere Details zur Syntax, automatischen Argumentkonvertierungen und den Alternativen.
Um aus dem Funktionskörper auf die variadischen Argumente zuzugreifen, werden die folgenden Bibliothekshilfsmittel bereitgestellt:
Definiert in Header
<cstdarg> | |
| ermöglicht den Zugriff auf variadische Funktionsargumente (Funktionsmakro) | |
| greift auf das nächste variadische Funktionsargument zu (Funktionsmakro) | |
(C++11) |
erstellt eine Kopie der variadischen Funktionsargumente (Funktionsmakro) |
| beendet den Durchlauf der variadischen Funktionsargumente (Funktionsmakro) | |
| enthält die Informationen, die von va_start, va_arg, va_end und va_copy benötigt werden | |
Beispiel
Diesen Code ausführen
#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); }
Ausgabe:
3 a 1.999 42.5
Siehe auch
|
C-Dokumentation
für
Variadic functions
|