Nim macros operate on Abstract Syntax Tree level and are integrated into the language, unlike C pre processor which is just replacing text. They are much more powerful - you can generate code, modify the AST tree directly, change how Nim behaves, etc.
See: <https://nim-lang.org/docs/tut3.html>, <https://dev.to/beef331/demystification-of-macros-in-nim-13n8> I would like to see generics, templates, macros as OP mentioned, maybe async with ORC or development for embedded devices with ORC.