Understanding do { ... } while (0) in C Macros | CodeTrail