我正在閱讀'The C Programming Language',並且遇到關於typedef struct的問題。該代碼是這樣的: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;
通過我們寫
typedef struct tnode *Treeptr;
TNODE仍尚未宣佈的時間,但我們沒有得到任何編譯錯誤, 但是當我們改變上面的語句成:
typedef Treenode *Treeptr;
我們得到的編譯錯誤:
error: parse error before '*' token
warning: data definition has no type or storage class
是什麼導致差異? 「結構tnode」不是「Treenode」嗎?
您可能會發現[C標準的哪個部分允許此代碼編譯?](http://stackoverflow.com/questions/12200096/which-part-of-the-c-standard-allows-this-code C++標準是否認爲這個頭文件中有一個或兩個'struct uperms_entry'類型?](http://stackoverflow.com/questions/11697705/does-the-c-standard-consider -that-one-or-two-struct-uperms-entry-typ)作爲相關內容,但它們可能會超出你所在的級別。 –