【发布时间】:2014-11-07 01:58:36
【问题描述】:
使用 gcc 编译时出现这两条错误消息
error: request for member ‘name’ in something not a structure or union
else if(strcmp((*node).name, (*root).name) < 0)
error: incompatible types when assigning to type ‘char[101]’ from type ‘char *’
(*node).name = SomeString;
根据我的发现,当您尝试调用这样的节点时,通常会发生第一个错误
node.name;
而不是
(*node).name;
因为这里不是这种情况,我想知道是什么导致了错误以及如何修复它?
节点定义为:
struct person {
char name[42];
struct person *left, *right;
} root;
由
创建struct person *node;
node = (struct person *) calloc(1, sizeof(struct person));
(*node).name = SomeString;
【问题讨论】:
-
请注意,使用 node->name 代替 (*node).name 更为典型
-
root不是指针。它是一个对象。使用root.name而不是(*root).name。 -
@RSahu 你怎么知道
root不是指针? -
@Daniel,发布的代码将
root定义为一个对象。 -
请发布一个最小的完整示例,而不是 sn-ps