I guess youneed to fix Techmuc's code.
Haven't actually tried, but maybe this works:

void my_wait_func(var);

my_wait_func = wait; //save pointer of wait in my_wait_func

#define wait(i) do{ diag("waiting\n"); my_wait_func(i); } while(0)