使用具有不同结构定义的相同代码

时间:2015-09-06 00:53:01

标签: c structure binary-tree binary-search-tree typedef

我有一个遍历二叉搜索树的函数 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;

我只是简单地将一个成员添加到了无法在函数中访问的结构中。

1 个答案:

答案 0 :(得分:0)

有可能,但不推荐。

首先,如果您包含一个且只有一个定义树结构的文件,则可以实现此目的。最简单的方法是定义某种虚拟预处理器常量,以定义要包含的文件。 E.g:

{{1}}

但是,您只能使用函数中两种树类型共有的字段,因为如果您使用的字段未在您包含的类型中定义,则代码甚至无法编译。

这非常棘手,可能会让任何正在阅读您的代码的人感到困惑,因为这种"模板"编程对于C来说并不常见。