【发布时间】:2017-05-28 00:23:48
【问题描述】:
如果您要声明如下内容:
struct MyStruct
{
int field1;
int[] field2;
int field3;
}
field 2 实际上是一个指向数组的指针,而不是数组本身。所以 MyStruct 保留了 3 个字节的大小。我想知道是否有办法做类似的事情,除了 field2 应该是数组本身而不是指针。
显然你可以只用一个数组来做到这一点,但我的最终目标是能够在上述结构中拥有不同类型的不同大小;这将需要填充(我不想要)。
这可能吗?
【问题讨论】:
-
你没有显示这三种结构类型的定义,但只要你定义了它们,你就可以创建一个联合,编译器有义务遵循你说你想要的规则跟随。
-
“这样所有字段都按照声明的顺序连续出现在内存中”--
struct中可能有填充。 Is this an XY problem? -
我建议您在决定您真正需要的是您想象的那样之前,非常仔细地阅读@DavidBowling 链接到的问题。您所面临的根本问题以前可能从未遇到过或解决过,但肯定没有按照您建议的方式解决。
-
如前所述,这有强烈的 XY 问题的味道。 为什么您认为您需要结构始终为其最小尺寸?您真正想做什么?可能有更好的方法来解决您的问题。
-
这确实应该从一开始就成为您问题的一部分。基本上,这是一个网络和树莓派问题,与 gcc 几乎无关。更新您的问题以更好地反映您要解决的实际问题,然后我们可以更好地尝试解决该问题。