Cで関数を受けるポインタを作成する。
gcc で動いたのでメモ。以下のコードは helloworld とターミナルに出力する。
#include <stdio.h>
void sub(void){ printf("hello"); }
void sub0(void){ printf("world"); }
int main(void){
void (*a)(void)=sub;
a();
a=sub0;
a();
return 0;
}[2010.10.24]次のコードも走ったのでメモ。void型ポインタでも関数ポインタにキャストができる。
#include <stdio.h>
int sub0 (int a) {
printf("%dhello",a);
return a+1;
}
int sub1 (int a, int b) {
printf("%d%dworld",a,b);
return a+b+1;
}
int main(void){
void * a;
a=sub0;
((int(*)(int))a)(1);
a=sub1;
((int(*)(int,int))a)(2,3);
}