The difference between cmacro is it builds on C syntax (and allows for syntax extensions, by having a very flexible parser), while this is more like the &quot;defmacro for C&quot; system described here[0] and here[1], because it uses a Lisp syntax.<p>I prefer the former approach because it&#x27;s less likely to alienate C programmers. At the same time, being able to define new syntax can have the same effect, since every new syntax you add carves out a smaller and smaller set of the community that is willing to use it. The same is true for Common Lisp reader macros, which is why few of the many syntax extensions that are available become commonly used.<p>[0]: <a href="http:&#x2F;&#x2F;www.european-lisp-symposium.org&#x2F;editions&#x2F;2014&#x2F;ELS2014.pdf" rel="nofollow">http:&#x2F;&#x2F;www.european-lisp-symposium.org&#x2F;editions&#x2F;2014&#x2F;ELS2014...</a><p>[1]: <a href="http:&#x2F;&#x2F;www.european-lisp-symposium.org&#x2F;editions&#x2F;2014&#x2F;selgrad.pdf" rel="nofollow">http:&#x2F;&#x2F;www.european-lisp-symposium.org&#x2F;editions&#x2F;2014&#x2F;selgrad...</a>