不允许指向不完整类类型的指针?

时间:2013-02-13 09:17:28

标签: c linked-list

我是C的新手,正在使用visual studio。 在编写此函数时,我收到此错误(不允许指向不完整类类型的指针)。我不知道为什么。

int Length(struct node* head) 
{
  struct node* current = head;
  int count = 0;
  while (current != NULL) 
   {
     count++;
     current = current->next;  <-- error here when pointing current to next
   }
  return count;
}

2 个答案:

答案 0 :(得分:2)

- &gt;运算符取消引用其左侧的表达式。因此,此时必须知道该对象的具体布局。 struct node* current=head行声明了一个指向结构的指针,当编译器看不到此结构的定义时,该结构可以是不透明的。要使此代码起作用,您需要将struct node的定义包含在编译单元中(= C mumble for file),您可以在其中使用该结构。

答案 1 :(得分:0)

编译器的错误听起来不正确。不允许的是访问不完整类型的内部属性,因为它需要知道它的内部。 current->next是尝试从指针获取不完整类型的内部数据。如果您想这样做,则需要在同一struct node文件或包含.c文件(标题)中包含.h的完整类型定义。