首先创建一个文件夹包含三个文件上层文件(frm.c)下层文件(cal.c)头文件(cal.h)
1.上层函数编写
#include <stdio.h>
#include "cal.h"
int lat(const struct cal_t *p)
{
return p->p1(p->a,p->b);
}
2.下层文件编写
#include <stdio.h>
#include <string.h>
#include "cal.h"
int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}
int mul(int a,int b)
{
return a*b;
}
int dev(int a,int b)
{
return a/b;
}
int main(void)
{
int ret = 0;
struct cal_t mycal;
mycal.a = 12;
mycal.b = 4;
mycal.p1 = add;
ret = lat(&mycal);
printf("ret=%d\n",ret);
return 0;
}
3.头文件编写
#ifndef __CAL_H__
#define __CAL_H__
typedef int (*func)(int,int); /这句重命名了一种类型,类型名叫func类型是int (*)(int,int);
struct cal_t
{
int a;
int b;
func p1;
};
int lat(const struct cal_t *p);
#endif