2012-09-08 151 views
0

我想傳遞一個typedef結構指針到一個函數和編譯器抱怨與此錯誤消息:錯誤:未知類型名稱'RootP'。這裏是代碼...Typedef結構指針功能(C)

int main() 
{ 
    typedef struct Root 
    { 
     struct Root *child; 
    }*RootP; 
    RootP rootNode = malloc(sizeof(struct Root)); 
    rootNode->child = NULL; 
    .... 

} 

void mkdir(RootP rootNode, char param2[60], char pwd[200]) 
{ 
    ... 
} 

回答

5

struct應該是main之外,所以main功能前移到

typedef struct Root 
{ 
    struct Root *child; 
}*RootP; 

。如果程序足夠大,請考慮將它移動到某個頭文件中(*.h

而且我會避免使用mkdir名稱。它在Posix中定義,在Linux上是指mkdir(2)系統調用。

我不覺得typedef struct Root *RootP;是漂亮的代碼:你通常希望一目瞭然地看到C是一個指針。相反,我會聲明struct root_st並且有typedef struct root_st Root;(Gtk也使用它,或者非常類似的編碼約定)。和代碼Root* rootnode。但這是值得商榷和品味的問題。

+0

'移動到一些頭文件':非常好的建議。 – xtofl

+0

@xtofl我也喜歡你的簡潔的答案,你應該取消刪除它:-) – cnicutar

+0

感謝所有的快速反應和提示。我正在創建一個模擬文件系統,它接受類的unix命令,mkdir的原因。 – boutrosc