#include typedef void print_fn (void); print_fn *my_print_fn; void outer (void) { int outer_val = 0x5678; void inner (void) { printf("in inner function, result = 0x%x\n",outer_val); } printf("in outer function\n"); inner(); my_print_fn = &inner; } void rewrite_stack (void) { char junk[1024] = {0,}; printf("rewriting stack\n"); } int main (int argc, char **argv) { outer(); if (argc > 1) { rewrite_stack(); } (*my_print_fn)(); return 0; }