利用 struct 定義一個 interface 出來
之後讓不同的實體各自去實做

例:
#include < stdio.h >

struct Callback_Interface {
    char *name;
    int (* myCal) (int numA, int numB);
};

int myCalculateA(int a, int b) {
    return a + b;
}
int myCalculateB(int a, int b) {
    return a * b;
}

struct Callback_Interface callback_implementA = {
    "implementA",
    myCalculateA,
};
struct Callback_Interface callback_implementB = {
    "implementB",
    myCalculateB,
};

int main() {
    printf("name=%s\n", callback_implementA.name);
    printf("myCal=%d\n", callback_implementA.myCal(1, 2));
    printf("\n");
    printf("name=%s\n", callback_implementB.name);
    printf("myCal=%d\n", callback_implementB.myCal(1, 2));
    return 0;
}


ps. struct 可以有不一樣的 initialization
Wiki C structure
但是 visual studio C compiler 不支援
問題+解答
arrow
arrow
    全站熱搜

    JohnDX 發表在 痞客邦 留言(0) 人氣()