我有一个遍历二叉搜索树的函数
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;
我只是简单地将一个成员添加到了无法在函数中访问的结构中。
答案 0 :(得分:0)
有可能,但不推荐。
首先,如果您包含一个且只有一个定义树结构的文件,则可以实现此目的。最简单的方法是定义某种虚拟预处理器常量,以定义要包含的文件。 E.g:
{{1}}
但是,您只能使用函数中两种树类型共有的字段,因为如果您使用的字段未在您包含的类型中定义,则代码甚至无法编译。
这非常棘手,可能会让任何正在阅读您的代码的人感到困惑,因为这种"模板"编程对于C来说并不常见。