Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我对下面的结构定义感到困惑。不应该都是正确的吗?使用 Borland C 都可以编译,但使用 gcc 只有第二个编译。错误是“未知类型名称_Node”。
_Node
typedef struct _Node { int item; _Node* next; } Node; typedef struct _Node { int item; struct _Node* next; } Node;
不,在 C 中只有第二个(明确包括说明struct符)是正确的。虽然 C++ 允许省略struct,但 c 不允许,所以这是一个不可移植的 Borland 扩展。如果你用 g++ 编译,我想它也应该接受第一种语法。
struct
这取决于编译器如何处理前向引用。gcc 编译器可能会这样做,这是默认情况下,因为它也是 C++ 编译器。