Why C/C++ Macros Use do { ... } while (0) and if/else Wrappers | CodeTrail