函数的Typedef结构指针(C)

时间:2012-09-08 19:46:59

标签: c function pointers struct typedef

我正在尝试将typedef结构指针传递给函数,并且编译器正在抱怨此错误消息:错误:未知类型名称'RootP'。以下是代码...

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])
{
    ...
}

1 个答案:

答案 0 :(得分:5)

struct应该在main之外,所以移动

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

main函数之前。如果程序足够大,请考虑将其移动到某个头文件(*.h

我会避免使用mkdir名称。它在Posix中定义,在Linux上是指mkdir(2)系统调用。

我不认为typedef struct Root *RootP;是漂亮的代码:你通常希望一眼看出C是指针的东西。我会改为声明struct root_st并且typedef struct root_st Root;(Gtk也使用它,或者非常类似的编码约定)。代码Root* rootnode。但这是值得商榷的问题。