macros become so more manageable when you do as little as possible on them and then defer to a function
honestly people would hate them so much less if that was the only usage
---
honestly the only annoying part of that for c is, having to manually declare function signatures in two places (codegen tooling could solve this, by e.g., generating a header with all non-static functions in a given .c file)
i was gonna say having to do internal headers was also annoying but honestly, that's for the best because it means internal interfaces are also nudged to be consistent