str*_*ika 6

与ars发布的链接略有不同的方法:您可以将switch语句中的值用作函数指针数组中的数组索引.所以不要写作

switch (i) {
    case 0: foo(); break;
    case 1: bar(); break;
    case 2: baz(); break;
}
Run Code Online (Sandbox Code Playgroud)

你可以这样做

typedef void (*func)();
func fpointers[] = {foo, bar, baz};
fpointers[i]();
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用函数指针而不是数字,如ars的答案中所述.