C語言簡單實現接口

使用函數指針和結構體簡單實現了一下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);
}
發佈了83 篇原創文章 · 獲贊 25 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章