我对下面的结构定义感到困惑。不应该都是正确的?用Borland C编译,但用gcc只编译第二个。错误是“未知类型名称_Node
”。
typedef struct _Node {
int item;
_Node* next;
} Node;
typedef struct _Node {
int item;
struct _Node* next;
} Node;
答案 0 :(得分:0)
这取决于编译器如何处理前向引用。 gcc编译器可以这样做,默认情况下,因为它也是一个C ++编译器。
答案 1 :(得分:0)
不,在C中只有第二个(明确包括struct
说明符)是正确的。虽然C ++允许省略struct
,但c不允许,因此这是一个不可移植的Borland扩展。如果用g ++编译,我想它也应该接受第一种语法。