無闇な cast は避けるべき
下のと同じ記事だが。
void *list[] = {write_cat, write_dog}; void *function; function = list[valur]; ((void(*)(void))function)();
無闇な cast というか、無闇に void ポインタを使わないほうが良い。
void (*list[2])(void) = {write_cat, write_dog}; void (*function)(void); function = list[value]; function();
まぁ、関数ポインタが絡んだ宣言は分かり難いことこの上ないので、通常は typedef するのが良い。
typedef void (*proc_t)(void); proc_t list[2] = {write_cat, write_dog}; proc_t function = list[value]; function();