in reply to I love anonymous functions!

I'd go with Fletch's solution of using a struct with a type field and a union with the various parameter options. Then pass this as a pointer/array. Maybe something like:
struct data { int type; union { int i; char *c; } value; }; int the_function(int argc, struct data *argv) { .... }
which gives you a single signature for all of your calls.

Not exactly clean, but workable...

Michael