I think this author should learn about the "do {} while(0)" trick.
What's the benefit of do {...} while (0) vs just {...} ?
Compare:
#define FOO() { ... }
#define BAR() do { ... } while (0)
In the former case: if (x)
FOO();
else
...;
// becomes
if (x) {
...
}
;
else
...;
In the latter case: if (x)
BAR();
else
...;
// becomes
if (x)
do {
...
} while (0);
else
...;