собственно, есть макросы и есть макросы. сишный препроцессор — это чтобы определять константы именами, да компенсировать отсутствие inline в компиляторе. а, и ещё делать кашу из ifdef-ов. лисповые макросы — это про общие трансформации кода, благодаря принципу «код — это обычные данные». крестошаблоны — это такой костыль из-за отсутствия нормальных макросов.

поэтому нелисперу никогда не понять, почему лисперы постоянно про макросы говорят (для нелиспера это кривые неудобные костыли). а лисперу никогда не понять, почему кривые неудобные костыли называют макросами.