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:

    I wonder, Diz, if this Don Quixote hasn’t got the jump on all of us. Wonder if it isn’t a curse to go wised up like you and me.
    Sidney Buchman (1902–1975)

    But hospitality must be for service, and not for show, or it pulls down the host. The brave soul rates itself too high to value itself by the splendor of its table and draperies. It gives what it hath, and all it hath, but its own majesty can lend a better grace to bannocks and fair water than belong to city feasts.
    Ralph Waldo Emerson (1803–1882)