Sto leggendo 'The C Programming Language' e ho riscontrato un problema relativo al typedef della struct. Il codice è simile a questo:Declaration rule in struct 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;
Per il momento in cui scriviamo
typedef struct tnode *Treeptr;
tnode non è ancora ancora dichiarato, ma non c'è niente di errore di compilazione, ma quando si cambia la dichiarazione di cui sopra in:
typedef Treenode *Treeptr;
otteniamo errore di compilazione:
error: parse error before '*' token
warning: data definition has no type or storage class
Che cosa fa la differenza? "Struct tnode" non è lo stesso di "Treenode"?
È possibile trovare [Quale parte dello standard C consente la compilazione di questo codice?] (Http://stackoverflow.com/questions/12200096/which-part-of-the-c-standard-allows-this-code -compile) e [Lo standard C considera che ci sono uno o due tipi 'struct uperms_entry' in questa intestazione?] (http://stackoverflow.com/questions/11697705/does-the-c-standard-consider -that-there-are-one-or-two-struct-uperms-entry-typ) come rilevanti, ma possono essere lanciati ad un livello che va oltre quello in cui ti trovi. –