Hi Ben, Ravi, GCC/Clang are fine with the just curly braces, or just do/while(0).
The core benefit of the ({ }) syntax is to allow multiple-statement macros to have expression syntax externally (i.e., yield a value) — which is not possible in standard C due to concession to simplistic parsers. Ben's link is a good one and does cover this in more detail. The URL ("Statement-Exprs") is a hint ;-). Best, Conrad On Wed, Jun 6, 2018 at 4:40 AM, Benjamin Kaduk <bjkf...@gmail.com> wrote: > On Wed, Jun 6, 2018 at 6:35 AM, Ravi Pokala <rpok...@freebsd.org> wrote: >> >> Hi Mateusz, >> >> -----Original Message----- >> From: <owner-src-committ...@freebsd.org> on behalf of Mateusz Guzik >> <m...@freebsd.org> >> Date: 2018-06-06, Wednesday at 01:08 >> To: <src-committ...@freebsd.org>, <svn-src-...@freebsd.org>, >> <svn-src-head@freebsd.org> >> Subject: svn commit: r334702 - head/sys/sys >> >> > ... >> > #ifdef _KERNEL >> > #define malloc(size, type, flags) ({ >> > \ >> >> Now that I'm taking another look at this, I'm confused as to why the >> entire macro expansion is inside parentheses? (The braces make sense, since >> this is a block with local variables which need to be contained.) > > > This is a gcc (and clang) extension to allow the macro body to be a code > block -- standard C gets unhappy with just the curly braces. > https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html is a maybe-relevant > page that google found me. > > -Ben _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"