Правило объявления в структуре 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
Что вызывает разницу? Не "структура тноде " такой же как "TreeNode "?