Re: [bug report] checkpatch: if statement does not need to be enclosed in parentheses

From: Joe Perches
Date: Sat Apr 08 2017 - 13:33:55 EST


On Sat, 2017-04-08 at 17:07 +0100, Alfonso Lima wrote:
> Hi,
>
> In current linux-next, if you run the script on this piece of
> code:
>
> #define FOO(a) \
> if (a) { \
> something(); \
> something_else(); \
> }
>
> You should get:
>
> ERROR: Macros with complex values should be enclosed in parentheses
> #1: FILE: foo.c:1:
> +#define FOO(a) \
> + if (a) { \
> + something(); \
> + something_else(); \
> + }
>
> We could silence checkpatch.pl using "do {} while ()" around the
> if statement. However, the "if () {}" statement should be
> enough. If someone could confirm this, I'll go and fix it.

Multiple if/else use is the reason do {} while (0) is suggested.

if (bar())
FOO(a);
else
baz(b);