From: "Maxime Devos" > I’ve seen do { body; } while (0) in some places (albeit not in SCM_SYSCALL), which you might want investigate and maybe copy (instead of the { body; }), but I don’t know what the purpose of that construct is.It's a way of turning a block into a statement. So you can use it in an if statement like:
#define MACRO() do { ... } while (0) if (...) MACRO(); else .... If the macro expanded to a block, it would make everyone unhappy. -Dale