Some refactoring of the macros. Use the "do {...} while(0)" template where it makes...