Heim >Backend-Entwicklung >C++ >Wie übergebe ich variable Argumente zwischen C-Funktionen mit Listen variabler Argumente?
Problem:
Sie haben zwei Funktionen, Beispiel( ) und exampleB(), mit ähnlichen variablen Argumentlisten:
void example(int a, int b, ...); void exampleB(int b, ...);
Sie müssen example() aus exampleB() heraus aufrufen, ohne Änderungen vorzunehmen die Liste der variablen Argumente des letzteren, wie sie anderswo verwendet wird.
Lösung:
Leider gibt es keine direkte Methode, um variable Argumente in C zu übergeben. Um dies zu erreichen, Sie müssen eine Hilfsfunktion definieren, die einen va_list-Parameter akzeptiert. Hier ist ein Beispiel:
#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... }
In diesem Setup:
By Wenn Sie exampleV() als Vermittler hinzufügen, können Sie die Variablenargumente an exampleB() übergeben, ohne die ursprüngliche Implementierung zu ändern.
Das obige ist der detaillierte Inhalt vonWie übergebe ich variable Argumente zwischen C-Funktionen mit Listen variabler Argumente?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!