我想要一个可以接受各种类型参数的函数指针。我怎么做?
下面的例子(第 1 行),我也希望void (*fp)(int)
能够采用void (*fp)(char*)
。以下代码无法正确编译,因为我在预期 int 的地方传递了 char*,因此编译以下代码会给您警告(并且无法正常工作)。
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;
}
注意:我知道尝试将整数 5 作为 char* 参数传递是愚蠢的,但这不是这个问题的关注点。如果需要,可以将 char* 替换为 float。