Date: Sun, 4 May 2008 08:34:30 -0700 (PDT) From: Unga <unga888@yahoo.com> To: Roland Smith <rsmith@xs4all.nl> Cc: Patrick Clochesy <pcloches@gmail.com>, freebsd-questions@freebsd.org Subject: Re: Variable arg function question Message-ID: <630200.71551.qm@web57011.mail.re3.yahoo.com> In-Reply-To: <20080504144532.GA56965@slackbox.xs4all.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
--- Roland Smith <rsmith@xs4all.nl> wrote: > On Sun, May 04, 2008 at 07:02:36AM -0700, Patrick > Clochesy wrote: > > What about using a macro (...) in front of the > function to csll it which > > passes __VARARGS__, NULL to ensure there is always > a trailing NULL? I think > > this would at least work in GCC... Can' test on my > phone though. > > That's a good idea. If one uses __VA_ARGS__ instead > of __VARARGS__, it > should work with any C99 compliant compiler, > including gcc. > > The good thing about variadic macros in C99[1] is > that you don't need a > first argument. > > Roland > > [1: http://en.wikipedia.org/wiki/Variadic_macro] > -- I gave it a try, but I cannot get it to work: (As per above wikipedia example) void realdprintf (char const *file, int line, char const *fmt, ...); #define dprintf(...) realdprintf(__FILE__, __LINE__, __VA_ARGS__) To solve my problem, I must be able to indicate the end of the arg list, may be by a empty string (""), but GNU C compiler does not allow to specify anything after the ... . How do I specify end of arg list? or is that the way? Unga ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?630200.71551.qm>