c言語構造体における定義関数
787 ワード
通常、cコードを書くときは、構造体で関数を定義することを望んでいるかもしれませんが、c言語では直接定義関数はサポートされていません.関数ポインタを定義することで実現できます.
//
#include
#include
/* , , , static, */
struct prt_fn {
int (*add) (int a, int b);
int (*sub) (int a, int b);
int (*mult) (int a, int b);
};
static int add(int a, int b)
{
return a + b;
}
static int sub(int a, int b)
{
return a - b;
}
static int mult(int a, int b)
{
return a * b;
}
int main()
{
int a = 10, b = 5;
//
struct prt_fn pfn = { add, sub, mult };
printf("a + b = %d
", pfn.add(a, b));
printf("a - b = %d
", pfn.sub(a, b));
printf("a * b = %d
", pfn.mult(a, b));
return 0;
}