0
我有遍歷二叉搜索樹 traverse(node_t*)
,其中一個功能:使用與結構的不同定義相同的代碼
typedef struct node_t{
char *key;
char *item;
struct node_t *parent;
struct node_t *left;
struct node_t *right;
}node_t;
我將能夠使用相同的功能traverse(node_t*)
與不同結構在相同的標識符下通過對頭文件做些什麼? 例如一個不同的結構,如:
typedef struct node_t{
char *key;
char *item;
struct node_t *parent;
struct node_t *left;
struct node_t *right;
struct node_t *next;
}node_t;
其中我只是簡單地添加一個成員的結構,不會在函數中訪問。
是的,這是可能的。當然,這些功能必須有不同的名稱才能區分它們,所以你需要一些宏觀詭計。檢查linux內核源代碼的一些想法。 –
C不允許重載或繼承。但是,如果將數據字段移動到管理字段之外,則可以編寫只能在管理字段上操作的通用函數。缺點是你必須在晚些時候投出實際的類型。 – Olaf
你不應該有相同結構的兩個不同的聲明。 – immibis