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:

    Those craning birds are choice for you, songs that jump back
    To the built voice, or fly with winter to the bells,
    But do not travel down dumb wind like prodigals.
    Dylan Thomas (1914–1953)

    ... So damn your food and damn your wines,
    Your twisted loaves and twisting vines,
    Your table d’hôte, your à la carte,
    . . . .
    From now on you can keep the lot.
    Take every single thing you’ve got,
    Your land, your wealth, your men, your dames,
    Your dream of independent power,
    And dear old Konrad Adenauer,
    And stick them up your Eiffel Tower.
    Anthony Jay (b. 1930)