https://www.reddit.com/r/C_Programming/comments/yjbe62/combining_default_named_and_positional_arguments/ {{{c struct fooParam { int x, y; }; #define foo(...) foo((struct fooParam) {__VA_ARGS__ }) int (foo)(struct fooParam p) { return p.x + p.y; } int main() { printf("%d\n", foo(.y = 20, .x = 10)); } }}}