这有效:
struct LD__32
{
struct LD__32 *ld;
};
Run Code Online (Sandbox Code Playgroud)
但这不是:
struct LD_32
{
struct LD_32 ld;
};
Run Code Online (Sandbox Code Playgroud)
为什么是这样?正如pmg猜测的那样,我正在编译它作为c ++代码.编辑
C中的结构不能包含不完整类型的成员.
在后一种情况下,您无法在LD_32 ld;定义中LD_32定义,因为此时LD_32尚未定义结构.
查看constaintsC中的结构
第6.7.2.1/2节
结构或联合不应包含具有不完整或函数类型的成员(因此,结构不应包含其自身的实例,但可以包含指向其自身实例的指针),除了结构的最后一个成员具有多个一个命名成员可能有不完整的数组类型; 这样的结构(以及可能递归地包含这种结构的成员的任何联合)不应是结构的成员或数组的元素.