Ü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, ...);
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... }
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!