Правило объявления в структуре typedef

Я читаю «Язык программирования C» и столкнулся с проблемой типа typedefструктура, Код выглядит так:

typedef struct tnode *Treeptr;
typedef struct tnode { /* the tree node: */
    char *word; /* points to the text */
    int count; /* number of occurrences */
    struct tnode *left; /* left child */
    struct tnode *right; /* right child */
} Treenode;

К тому времени, когда мы пишем

typedef struct tnode *Treeptr;

tnode еще не объявлен, но мы не получим никакой ошибки компиляции, но когда мы изменим приведенное выше утверждение на:

typedef Treenode *Treeptr;

Мы получаем ошибку компиляции:

error: parse error before '*' token
warning: data definition has no type or storage class

Что вызывает разницу? Разве «struct tnode» не совпадает с «Treenode»?

Ответы на вопрос(3)

Ваш ответ на вопрос