さまざまな種類のパラメータをとることができる関数ポインタが欲しいです。それ、どうやったら出来るの?
void (*fp)(int)
次の例(1行目)も取り上げたいと思い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に置き換えることができます。