2012-09-08 95 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