Variadische Funktionen
Von cppreference.com
Variadische Funktionen sind Funktionen (z.B. std::printf), die eine variable Anzahl von Argumenten entgegennehmen.
Um eine variadische Funktion zu deklarieren, erscheint nach der Liste der Parameter eine Ellipse, z.B. int printf(const char* format...);, der ein optionales Komma vorangestellt sein kann. Weitere Details zur Syntax, automatischen Argumentkonvertierungen und Alternativen finden Sie unter Variadische Argumente.
Um von innerhalb des Funktionskörpers auf die variadischen Argumente zuzugreifen, werden folgende Bibliotheksmittel bereitgestellt
| Definiert im 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 die Durchquerung der variadischen Funktionsargumente (Funktionsmakro) | |
| hält die von va_start, va_arg, va_end und va_copy benötigten Informationen (typedef) | |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
[bearbeiten] Siehe auch
| C-Dokumentation für Variadische Funktionen
|