0

我对下面的结构定义感到困惑。不应该都是正确的吗?使用 Borland C 都可以编译,但使用 gcc 只有第二个编译。错误是“未知类型名称_Node”。

typedef struct _Node {
    int item;
    _Node* next;
} Node;


typedef struct _Node {
    int item;
    struct _Node* next;
} Node;
4

2 回答 2

0

不,在 C 中只有第二个(明确包括说明struct符)是正确的。虽然 C++ 允许省略struct,但 c 不允许,所以这是一个不可移植的 Borland 扩展。如果你用 g++ 编译,我想它也应该接受第一种语法。

于 2012-11-03T18:32:00.440 回答
0

这取决于编译器如何处理前向引用。gcc 编译器可能会这样做,这是默认情况下,因为它也是 C++ 编译器。

于 2012-11-03T18:27:53.260 回答