以前总是在C++中使用struct,因此诸如以下的语句会无错编译:
struct node
{
double a;
node *left;
node *right;
}
......
node * InitNode(node *root,node *newnode)
{
.....
}
但是对于纯净的C编译器来说,以上这段代码就出问题了。C编译器不会默认认为node是 一种类型,因此你需要对上述代码做如下处理:
struct node
{
double a;
struct node *left;
struct node *right;
}
......
struct node * InitNode(struct node *root, struct node *newnode)
{
.....
}
每个node都要以关键字 struct 说明这是一种类型,很麻烦,但是必须如此。你也可以使用 typedef 关键字以简化操作:
struct node
{
double a;
struct node *left;
struct node *right;
}
typedef struct node tnode;
......
tnode * InitNode(tnode *root, tnode *newnode)
{
.....
}