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:

    Men are afraid to rock the boat in which they hope to drift safely through life’s currents, when, actually, the boat is stuck on a sandbar. They would be better off to rock the boat and try to shake it loose, or, better still, jump in the water and swim for the shore.
    Thomas Szasz (b. 1920)

    Will you greet your doom
    As final; set him loaves and wine; knowing
    The game is finished when he plays his ace,
    And overturn the table and go into the next room?
    Philip Larkin (1922–1986)