[do/whiles in C++ macros](http://stackoverflow.com/questions/154136/do-while-and-if-else-statements-in-c-c-macros) are an ugly corner of the language.