我试图使用 typedef
定义一个包含指向同一类型的另一个结构体指针的结构体。
这是我认为最好的版本:
typedef struct Element
{
char value;
struct Element *next;
} Element;
为什么这个变量也可以编译和执行?
typedef struct
{
char value;
struct Element *next;
} Element;
第一个可以这么描述:"名字为 struct Element
,现在叫做 Element
"。第二个可以描述为:"取这个匿名的 struct
并且把它叫做 Element
"。
但是为什么我还能在第二种情况下声明一个 struct Element
(在结构体内部)呢?
(在 GCC
和 MSVC
中使用)
next
实际上变成了一个结构体struct{}
,你需要深入了解一下typedef
的实际作用。 - bigkmstruct Element *next;
替换成Element *next;
被报告为错误。你是什么意思? - ordagstruct struct {}
是什么意思?在第二种情况下,next
是指向struct Element
的指针;问题在于struct Element
是不完整的类型。 - Keith Thompson