I want to have a function pointer that can take various types of parameters. How do I do that?
The following example (line 1), I want void (*fp)(int) to be able to take void (*fp)(char*) as well. The following code does not properly compile because I’m passing char* where int is expected so compiling the following code will give you warnings (and won’t work properly).
void callIt(void (*fp)(int))
{
(*fp)(5);
}
void intPrint(int x)
{
printf("%d\n", x);
}
void stringPrint(char *s)
{
printf("%s\n", s);
}
int main()
{
void (*fp1)(int) = intPrint;
callIt(fp1);
void (*fp2)(char*) = stringPrint;
callIt(fp2);
return 0;
}
Note: I know that attempting to pass integer 5 as char* parameter is stupid, but that’s not the concern for this question. If you want, you can replace char* with float.
I would say use
void (*fp)(void*), then pass in pointers to your variables and cast them as void*. It’s pretty hacky, but it should work.eg: