[alsa-devel] [WIP PATCH] Scarlett mixer interface for 6i6, 18i6, 18i8 and 18i20.
Takashi Iwai
tiwai at suse.de
Thu Oct 9 10:39:06 CEST 2014
At Wed, 08 Oct 2014 23:21:54 +0200,
Robin Gareus wrote:
>
> > +#define CTL_SWITCH(cmd, off, no, count, name) \
> > + do { \
> > + err = add_new_ctl(mixer, &usb_scarlett_ctl_switch, cmd, off, no, 2,
> count, name, NULL, &elem); \
> > + if (err < 0) \
> > + return err; \
> > + } while (0)
>
> curious, why "do { } while (0)" and not just "{ }" ?
It's a standard trick to make the macro working with if/else in kernel
codes.
Suppose a macro like
#define FOO() { .... }
and use it like
if (something)
FOO();
else
bar();
then you'll get a build error.
But it can be avoided by surrounding do and while (0).
#define FOO() do { .... } while (0)
Takashi
More information about the Alsa-devel
mailing list