2009-11-11 13 views

Antwort

8

Sie benötigen eine separate Version, die mit expliziten Argumentlisten funktioniert:

void vfunc(int x, va_list args) 
{ 
    /* do stuff */ 
} 

void func2(int x, ...) 
{ 
    va_list arg; 

    va_start(arg, x); 
    vfunc(x, arg); 
    va_end(arg); 
} 

Dies ist der Grund, gibt es Standardfunktionen wie vprintf().

va_start (3) man-Seite hat ordentliche Erklärung, wie mit va_list Objekten einschließlich gutem Beispiel arbeiten:

+0

Dies hat mir geholfen, Code-Duplizierung zu vermeiden; Danke! – Arun

0

Um zu „entspannen“ Antwort gegeben werden.

Auch die printf (3) Seite enthält ein noch besseres Beispiel für eine va_list basierte Call Infrastruktur um vsnprintf (3) (Sie können diese Seite mit einem der printf() Variantennamen aufrufen).

Verwandte Themen