c - How do I pass "..." (variable-length arg list), unchanged, through my function to another? -


this question has answer here:

old client code:

printf("foo: %d, bar: %s.\n", f, b); 

what i'd replace printf (& 100's others it) with:

my_printf(ctrl1, ctrl2, "foo: %d, bar: %s.\n", f, b); 

implementation of my_printf

void my_printf(ctrlt1 c1, ctrl c2, char* fmt, ...) { /* stuff c1 & c2 */    fprintf(log, fmt, **what_goes_here**); } 

what i've tried far

it seems there ought simple, direct way pass list of arguments associated ... through fprintf. tried fprintf(log, fmt, ...); compiler complains, "syntax error before '...' token".

i tried: va_list ap; va_start(ap, fmt); fprintf(log, fmt, ap);

the call va_list compiles , runs without coring, what's being passed printf plainly not same thing passed function ..., may judged output (representation of non-printing char).

if push comes shove, walk through contents of va_list brute-force seems stupid. there no simple token or syntax pass ... through?

this isn't general solution, stdio functions, @ ones start letter v, such vfprintf. take va_list last parameter, instead of ....

void my_printf(ctrlt1 c1, ctrl c2, char* fmt, ...) {     /* stuff c1 & c2 */     va_list ap;     va_start (ap, fmt);     vfprintf (log, fmt, ap);     va_end (ap); } 

Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -