Namensräume
Varianten
Aktionen

Variadische Funktionen

Von cppreference.com
< cpp‎ | utility
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
Variadische Funktionen
 

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) [bearbeiten]
greift auf das nächste variadische Funktionsargument zu
(Funktionsmakro) [bearbeiten]
(C++11)
erstellt eine Kopie der variadischen Funktionsargumente
(Funktionsmakro) [bearbeiten]
beendet die Durchquerung der variadischen Funktionsargumente
(Funktionsmakro) [bearbeiten]
hält die von va_start, va_arg, va_end und va_copy benötigten Informationen
(typedef) [bearbeiten]

[bearbeiten] Beispiel

#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