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:

    “Thus twice before, and jump at this dead hour,
    With martial stalk hath he gone by our watch.”
    —William Shakespeare (1564–1616)

    “When the painted birds laugh in the shade,
    When our table with cherries and nuts is spread:
    Come live, and be merry, and join with me
    To sing the sweet chorus of ‘Ha, ha, he!’”
    —William Blake (1757–1827)