WARNING: Macros with flow control statements should be avoided