2010-03-30 49 views
1

我想用一些基本的結構用C這樣的:「解析錯誤」,在結構聲明

struct p { 
    int a; 
    int b; 
    p * next; 
} 

但是,它未能與p * next;行與error: parse error before "p"編譯。

你有什麼想法可以解決這個問題嗎?

回答

9

C的結構生活在一個不同的命名空間,必須要明確範圍的,即:

struct p { 
    int a; 
    int b; 
    struct p * next; 
}; 

和結束時不要忘了分號! :-)

你可以假裝你在C++:typedef struct p { /*...*/ } p;。但我認爲next仍然會如上所述。

+1

你說得對,'struct p * next;'仍然需要typedef,因爲typedef'd name * p *還不在範圍內。 – 2010-03-30 08:02:55