On Sun, May 04, 2008 at 04:01:39AM -0700, Unga wrote: > > > Unfortunately va_arg() [stdarg(3)] does not return > > > NULL or any other suitable value after processing > > the > > > arg list, it just simply crashes once the arg list > > is > > > exhausted. > > > > It is _your_ task to properly close the argument > > list. E.g. by supplying > > a NULL pointer as the last argument. > > > Infact, I have implemented it in this way. I was > wondering if there is a better way.
Not really within the bounds of the C language. > > > How do you guys implement variable arg function > > such > > > as f(str1, str2, str3, ..., strN)? > > > > you could use the same format as main: int foo(int > > num, char **args) > > > > This is interesting. Who set the num? The compiler or > the user. If it is the user, its no better than above > NULL pointer method. > > If this is possible, my problem is solved: > f(str1, str2, str3, ..., strN) is at compile time > expands to _f(int num, str1, str2, str3, ..., strN). > > The num is set automatically by the compiler by > counting the args. > > Is this possible? You could write a custom preporcessor that translates f calls into calls for _f. Roland -- R.F.Smith http://www.xs4all.nl/~rsmith/ [plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated] pgp: 1A2B 477F 9970 BA3C 2914 B7CE 1277 EFB0 C321 A725 (KeyID: C321A725)
pgpSHdHk0d8UA.pgp
Description: PGP signature