Even in C, always remember the rules of Macro Club[1]:
1) You do not write macros.
2) You do not write macros that violate expectations of normal code behavior.
3) If this is your first time, you must write a macro.
4) Don't think object-oriented.
5) No shirt, No shoes, No dynamic scope.
6) Don't create new scoping rules.
[1] http://stuartsierra.com/download/2010-10-23-clojure-conj-mac...