结构声明中的"解析错误"

Eta*_*tan 1 c gcc struct

我想在C中使用一些基本结构,如下所示:

struct p {
    int a;
    int b;
    p * next;
}
Run Code Online (Sandbox Code Playgroud)

然而,它无法编译与error: parse error before "p"在线p * next;.

你知道这个问题的原因是什么吗?

Mar*_*tos 9

C结构存在于不同的命名空间中,必须明确确定范围,因此:

struct p {
    int a;
    int b;
    struct p * next;
};
Run Code Online (Sandbox Code Playgroud)

不要忘记最后的分号!:-)

你可以伪装成C++ : typedef struct p { /*...*/ } p;. 但我认为next仍然会如上所述.