Date: Sun, 29 Jul 2012 15:38:59 -0400 From: Arnaud Lacombe <lacombar@gmail.com> To: Luigi Rizzo <rizzo@iet.unipi.it> Cc: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>, David Chisnall <theraven@freebsd.org>, current@freebsd.org Subject: Re: RFC: libkern version of inet_ntoa_r Message-ID: <CACqU3MVNCOdde7atRVT7xaYH1qHjm=4uS0Eih8EgG3=DDaOGCw@mail.gmail.com> In-Reply-To: <20120729191958.GB85015@onelab2.iet.unipi.it> References: <20120725155211.GA33971@onelab2.iet.unipi.it> <alpine.BSF.2.00.1207282213171.4474@ai.fobar.qr> <20120729095833.GB80946@onelab2.iet.unipi.it> <CBCC6E24-8D03-422E-B571-1B62FB7667E6@FreeBSD.org> <20120729191958.GB85015@onelab2.iet.unipi.it>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, On Sun, Jul 29, 2012 at 3:19 PM, Luigi Rizzo <rizzo@iet.unipi.it> wrote: > Remapping f(a) into f(a, b) requires both a macro > and a wrapping function, something like this > > T __f(T1 a, T2 b) { return f(a, b); } > #define f(a) __f(a, b) > This can be done way more easily: void fn(int a, int b) { printf("%d %d\n", a, b); } #define fn(x) ({ fn(x, 42); }) int main(int argc, char **argv) { fn(0); return 0; } works just fine. > but i am not so interested in participating to the IOCCC :) > maybe you should ;-) - Arnaud ps: this construct is used all over the Linux kernel compatibility libraries.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACqU3MVNCOdde7atRVT7xaYH1qHjm=4uS0Eih8EgG3=DDaOGCw>