C言語でクロージャを実装すると
https://pineapple.blog/c%E8%A8%80%E8%AA%9E%E3%81%A7%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%B8%E3%83%A3%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%81%A8-535e0a5afd36

struct make_plus_n_context_t {
int _n;
int (*_func)(const struct make_plus_n_context_t *, int);
};
typedef struct make_plus_n_context_t MAKE_PLUS_N_CONTEXT_T;