溫馨提示×

c語言泛型的最佳實踐案例

小樊
86
2024-07-19 14:37:45
欄目: 編程語言

在C語言中實現(xiàn)泛型的最佳實踐案例是使用宏定義和函數(shù)指針。以下是一個簡單的例子:

#include <stdio.h>

// 定義一個泛型的結(jié)構(gòu)體,包含一個void*指針和一個函數(shù)指針
typedef struct {
    void* data;
    void (*printFunc)(void*);
} GenericData;

// 定義一個打印整數(shù)的函數(shù)
void printInt(void* data) {
    printf("%d\n", *(int*)data);
}

// 定義一個打印浮點數(shù)的函數(shù)
void printFloat(void* data) {
    printf("%f\n", *(float*)data);
}

int main() {
    int intValue = 10;
    float floatValue = 3.14;

    // 創(chuàng)建一個存儲整數(shù)的泛型結(jié)構(gòu)體
    GenericData intData = {&intValue, printInt};
    // 調(diào)用打印函數(shù)
    intData.printFunc(intData.data);

    // 創(chuàng)建一個存儲浮點數(shù)的泛型結(jié)構(gòu)體
    GenericData floatData = {&floatValue, printFloat};
    // 調(diào)用打印函數(shù)
    floatData.printFunc(floatData.data);

    return 0;
}

在這個例子中,我們定義了一個泛型的結(jié)構(gòu)體GenericData,該結(jié)構(gòu)體包含一個void*類型的指針和一個函數(shù)指針,用于調(diào)用相應(yīng)類型的打印函數(shù)。通過創(chuàng)建不同類型的泛型結(jié)構(gòu)體,并傳入相應(yīng)的數(shù)據(jù)和打印函數(shù),實現(xiàn)了對不同類型數(shù)據(jù)的泛型處理。

0