variable # of args portability?

hansen at mips.UUCP hansen at mips.UUCP
Wed Jul 9 13:15:57 AEST 1986


> I want to be able to write a function that will take an unknown number
> of arguments and then call another such function with these arguments,
> namely something like printf() that calls _doprnt() without processing
> its arguments at all.  I know there is no way to write this code portably,
> but is it reasonable to assume that I will be able to do it at all in
> most common implementations of C?  Also, how safe is it to assume that there
> will be something like _doprnt() available?  I know it's not good to depend on
> things like this, but I don't want to have to write my own printf()...
> 
> 	Wayne

System V defines functions named vprintf, vfprintf, and vsprintf,
that combined with the macros defined in varargs.h, provide a
reasonably portable interface to _doprnt.  The first two
functions are trivial to implement on a machine that has _doprnt,
the third is a little tricker, since you must trick the stdio package
into outputting into a string, and the necessary flag setting
is rather unportable (which is why the v...printf functions should
be defined in the system-provided library).

Using varargs.h goes a long way toward making such functions portable.

-- 

Craig Hansen			|	 "Evahthun' tastes
MIPS Computer Systems		|	 bettah when it
...decwrl!mips!hansen		|	 sits on a RISC"



More information about the Comp.lang.c mailing list