typedef struct foo {} foo_t; typedef void (*func_t)(foo_t *s); void cb_1 (foo_t *s); void cb_2 (foo_t *s); typedef struct config_s { func_t func; } config; static const config table[2] = { { cb_1 }, { cb_2 } }; int deflate (foo_t *s, int which) { (*(table[which].func))(s); }