Skip site navigation (1)Skip section navigation (2)
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>