函数的Typedef结构指针(C)

bou*_*osc 0 c struct pointers typedef function

我试图将一个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])
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

struct应该是外面main,这样的举动

typedef struct Root
{
    struct Root *child;
 }*RootP;
Run Code Online (Sandbox Code Playgroud)

main功能之前.如果程序足够大,可以考虑将其移动到某个头文件中(*.h)

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

我觉得这typedef struct Root *RootP;不是很漂亮的代码:你通常希望一眼看出什么是C指针.我会改为声明struct root_sttypedef struct root_st Root; (Gtk也使用它,或者非常类似的编码约定).和代码Root* rootnode.但这是有争议的,也是品味问题.