这个答案说:
......最后, typedef struct { ... } Foo; Run Code Online (Sandbox Code Playgroud) 声明一个匿名结构并为其创建一个typedef.因此,使用此构造,它在标记名称空间中没有名称,只有typedef名称空间中的名称.这意味着它也无法向前宣布.如果要进行前向声明,则必须在标记名称空间中为其指定名称.
......最后,
typedef struct { ... } Foo;
声明一个匿名结构并为其创建一个typedef.因此,使用此构造,它在标记名称空间中没有名称,只有typedef名称空间中的名称.这意味着它也无法向前宣布.如果要进行前向声明,则必须在标记名称空间中为其指定名称.
什么是前瞻性声明?
c++ forward-declaration
c++ ×1
forward-declaration ×1