ジャンプ台の使用例をいくつか教えてください。私はウィキペディアでこの例を見ました:
#include <stdio.h>
#include <stdlib.h>
typedef void (*Handler)(void); /* A pointer to a handler function */
/* The functions */
void func3 (void) { printf( "3\n" ); }
void func2 (void) { printf( "2\n" ); }
void func1 (void) { printf( "1\n" ); }
void func0 (void) { printf( "0\n" ); }
Handler jump_table[4] = {func0, func1, func2, func3};
int main (int argc, char **argv) {
int value;
/* Convert first argument to 0-3 integer (Hash) */
value = atoi(argv[1]) % 4;
if (value < 0) {
value *= -1;
}
/* Call appropriate function (func0 thru func3) */
jump_table[value]();
}
しかし、示されているようにインデックスを使用する代わりに関数を呼び出す別の方法があるかどうか疑問に思っていました.上記の場合はjump_table[value]();
私が達成したいのは、インデックスを使用する代わりに、関数自体の名前を使用する方法があるということです。
たとえば、構造体にすべての関数ポインターがあるとします。
typedef struct _funcptrs
{
void func1();
void func2();
} funcptrs;
そして今、関数を呼び出したいときに、次のようなことができますfuncptrs.func1()
か?