C Macros are a bit annoying to deal with, but it's possible. You end up needing to use some `{.emit: "...".}` code blocks along with some static strings.
I did some work with similar macros for Zephyr and put it in my macro library `cdecl <https://github.com/elcritch/cdecl#nimcdeclmacro-crawstr-example>_`.