使用函數指針和結構體簡單實現了一下C語言的接口。
#include <stdio.h>
#include <stdlib.h>
//c語言做接口
typedef struct{
int (*add)(int , int );
void (*print)(char* );
}Env ,*PEnv;
//獲取一個實例的指針,可以使用不同的初始化函數對接口進行實現
PEnv getEnv()
{
PEnv env = (PEnv)malloc(sizeof(Env));
return env;
}
//初始化函數對結構體賦值,相當於實現接口
PEnv InitEnv(PEnv env, int (*_add)(int , int ), void (*_print)(char* ))
{
env->add = _add;
env->print = _print;
return env;
}
//真正函數的實現 可以直接通過修改這些具體實現函數來改變程序的功能,這樣可以隔離變化
int add(int a, int b)
{
return a+b;
}
void print(char* str)
{
printf("%s\n", str);
}
//***************************************************
//使用接口
void doSomeThingThroughEnv(PEnv env)
{
int sum;
sum = env->add(1,2);
printf("***%d***\n", sum);
env->print("chenchen");
}
void main()
{
int sum;
PEnv env = getEnv();
InitEnv(env, add, print); //此處只要有函數名即可
doSomeThingThroughEnv(env);
}