Typedef用法不明确

时间:2014-02-08 14:32:10

标签: c list

我正在学习C,我不清楚typedef。我正在创建一个链接列表。

type.h

#ifndef

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;

List MakeEmpty( List L);
int IsEmpty( List L);
int Islast( Position P, List L);
Position Find( ElementType X, List L );
void delete( ElementType X, List L );
Position FindPrevious( ElementType X, List L );
void Insert( ElementType X, List L, Position P );
ElementType Retrieve( Position P );
#endif

我怀疑ElementType不是用typedef创建的,但我们如何使用此声明。

type.c

#include<stdio.h>
#include "type.h"

struct Node
{
    ElementType Element;
    Position Next;
};

ElementTypeStruct Node的声明是否有效。如果有,怎么样?

1 个答案:

答案 0 :(得分:1)

type.h 中的所有原型只使用指向struct Node的指针而不是结构本身。因此,当您包含文件type.h时,类型Node不必完整。

但是,您必须先使用使用实现以及已在类型中删除的函数,使用元素类型定义所有元素。 ħ即可。对于函数的使用,您需要实例化对象,不完整类型是不可能的。实现通常会取消引用指针,对于不完整类型,这也是不可能的。

因此,在使用ElementType的任何实例之前,您必须先定义typedef struct Node