0

私はCが初めてで、ビジュアルスタジオを使用しています。この関数を書いているときに、このエラーが発生しました(不完全なクラス型へのポインタは許可されていません)。どうしてか分かりません。

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行は、この構造体の定義がコンパイラによって認識されない場合に、構造体 (この構造体は不透明にすることができます) へのポインターを宣言します。このコードを機能させるには、構造体を使用するコンパイル ユニット (ファイルの場合は C mumble) に構造体ノードの定義を含める必要があります。

于 2013-02-13T09:26:30.990 に答える
0

コンパイラのエラーは間違っているように聞こえます。許可されていないのは、内部の知識が必要なため、不完全な型の内部プロパティにアクセスすることです。current->nextポインタから不完全型への内部データを取得しようとしています。struct nodeそのためには、同じ.cファイルまたはインクルード.hファイル (ヘッダー)に完全な型定義を含める必要があります。

于 2013-02-13T09:27:08.290 に答える