I gotta say what I really like about macros are that ( and )s are matched. If you say:
while ($($cond:tt)*) {
You'll actually match both while (true) {
and while (5 * (2 + 3)) {
. It counts the parenthesis :D