Branch Table - Jump Table Example in C

Jump Table Example in C

Another simple example, this time demonstrating a jump table rather than a mere branch table. This allows program blocks outside of the currently active procedure/function to be called:

#include #include 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 = {func0, func1, func2, func3}; int main (int argc, char **argv) { int value; /* Convert first argument to 0-3 integer (Hash) */ value = atoi(argv) % 4; if (value < 0) { value *= -1; } /* Call appropriate function (func0 thru func3) */ jump_table; }

Read more about this topic:  Branch Table

Famous quotes containing the words jump and/or table:

    Some of these men had become abstrusely entangled with the spying departments of other nations and would give an amusing jump if you came from behind and tapped them on the shoulder.
    Vladimir Nabokov (1899–1977)

    Life is a thin narrowness of taken-for-granted, a plank over a canyon in a fog. There is something under our feet, the taken-for-granted. A table is a table, food is food, we are we—because we don’t question these things. And science is the enemy because it is the questioner. Faith saves our souls alive by giving us a universe of the taken-for-granted.
    Rose Wilder Lane (1886–1968)