0

我是 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;
}
4

2 回答 2

2

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

于 2013-02-13T09:26:30.990 回答
0

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

于 2013-02-13T09:27:08.290 回答