结构在C

时间:2019-04-05 22:51:24

标签: c struct

为了使我的代码尽可能清晰,我正在尝试执行以下操作:

struct Test {
   int a; 
   int b;
   struct Test2 c;
};

struct Test2{
   int d;
};

当然,此代码是错误的,因为在定义之前使用了struct Test2。我想声明该结构。因此,我在struct Test2;之前输入了struct Test,但是没有用。有解决方案吗?

我知道函数是可能的,所以结构应该是这种情况吗?

2 个答案:

答案 0 :(得分:4)

仅当struct Test持有类型为struct Test2*的指针时,它才有效。 如果包含实例,则必须在struct Test2之前定义struct Test,因为必须知道struct Test2的大小。

答案 1 :(得分:4)

不可能这样做的原因是,当您在struct Test2内放置一个具体的struct Test对象时,需要知道Test2的大小才能确定{{1 }}。但是,如果不先了解完整的定义,就无法知道尺寸。

前向声明使您可以使用指向类型的指针,因为您可以指向某个对象而无需稍后的详细信息。尽管它可能无法完全满足您的需求,但您可以可以通过向前声明执行以下操作:

Test

函数声明起作用的原因是它告诉您有关如何与函数接口的所有知识。您不需要此功能本身。