On Mon, Jul 29, 2013 at 03:22:52PM -0400, Ed Maste wrote:
> On 29 July 2013 12:57, Ben Pfaff <b...@nicira.com> wrote:
> > In C, one can do preprocessor tricks by making a macro expansion include
> > the macro's own name.  We actually used this in the tree to automatically
> > provide function arguments, e.g.:
> >
> >     #define f(x) f(x, __FILE__, __LINE__)
> >     int f(int x, const char *file, int line);
> >
> > ...
> >
> >     f(1);    /* Expands to a call like f(1, __FILE__, __LINE__); */
> >
> > However it's somewhat confusing, so this commit stops using that trick.
> >
> > Reported-by: Ed Maste <ema...@freebsd.org>
> > Signed-off-by: Ben Pfaff <b...@nicira.com>
> 
> Acked-by: Ed Maste <ema...@freebsd.org>

Thanks for the review.

> One minor comment:
> 
> >        #define f(x) f(x, __FILE__, __LINE__)
> >        int f(int x, const char *file, int line);
> 
> Unlike the instances in the source, the example as-is doesn't compile,
> which I think helps provide justification for the removal of the trick

Oops.

> It's missing either an #undef, or the further trick of relying on the
> preprocessor only expanding function-like macros if the token
> following is a left parenthesis, resulting in the odd-looking int
> (f)(int x, const char *file, int line) syntax.

I reversed the order of the lines, which should also fix it.

I applied this to master, thanks.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to