Why the `do { ... } while (0)`? Wouldn't just `{ ... }` work?