Heim > Backend-Entwicklung > C++ > Wie übergebe ich variable Argumente von einer Funktion an eine andere mit variablen Argumentlisten?

Wie übergebe ich variable Argumente von einer Funktion an eine andere mit variablen Argumentlisten?

Mary-Kate Olsen
Freigeben: 2024-12-07 03:18:10
Original
836 Leute haben es durchsucht

How to Pass Variable Arguments from One Function to Another with Variable Argument Lists?

Übergabe variabler Argumente an Funktionen mit variablen Argumentlisten

Bei der Arbeit mit Funktionen, die eine variable Anzahl von Argumenten akzeptieren, ist es oft notwendig, sie aufzurufen eine solche Funktion von einer anderen. Allerdings kann die direkte Übergabe von Argumenten von einer Funktion an eine andere problematisch sein, ohne die Zielfunktion zu ändern, wenn sie bereits an anderer Stelle verwendet wird.

Betrachten Sie das folgende Beispiel:

void example(int a, int b, ...);
void exampleB(int b, ...);
Nach dem Login kopieren

In diesem Szenario Beispiel ruft exampleB auf. Es stellt sich jedoch die Frage: Wie können die Variablenargumente in Beispiel an BeispielB übergeben werden, ohne die ursprüngliche Implementierung zu ändern?

Eine direkte Übergabe von Argumenten von Beispiel an BeispielB ist nicht möglich. Stattdessen muss eine Zwischenfunktion erstellt werden, die eine va_list akzeptiert:

#include <stdarg.h>

static void exampleV(int b, va_list args);

void exampleA(int a, int b, ...)    // Renamed for consistency
{
    va_list args;
    do_something(a);                // Use argument a somehow
    va_start(args, b);
    exampleV(b, args);
    va_end(args);
}

void exampleB(int b, ...)
{
    va_list args;
    va_start(args, b);
    exampleV(b, args);
    va_end(args);
}

static void exampleV(int b, va_list args)
{
    ...whatever you planned to have exampleB do...
    ...except it calls neither va_start nor va_end...
}
Nach dem Login kopieren

Durch die Einführung von exampleV, das sowohl b als auch args als Argumente akzeptiert, kann exampleA seine Variablenargumente an exampleB übergeben, ohne seine Implementierung zu ändern. Diese Zwischenfunktion kann dann verwendet werden, um die beabsichtigten Aktionen auszuführen, ohne die ursprüngliche Implementierung von exampleB zu stören.

Das obige ist der detaillierte Inhalt vonWie übergebe ich variable Argumente von einer Funktion an eine andere mit variablen Argumentlisten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage