命名数组元素或联合中的结构和数组
||
考虑以下结构:
struct Vector4D
{
union
{
double components[4];
struct { double x, y, z, t; } Endpoint;
};
};
在我看来,我在WinApi的IPAddress结构中看到了类似的内容。这个想法是让我可以同时使用索引和名称来使用数组组件,例如:
Vector4D v;
v.components[2] = 3.0;
ASSERT(v.Endpoint.z == 3.0) //let\'s ignore precision issues for now
在C ++标准中,可以保证POD结构的开头没有“空”空间,也就是说,元素x恰好位于Endpoint结构的beginnig中。目前很好。但是我似乎找不到任何保证,如果有的话,在x
和y
之间或y
和z
之间将没有空白或填充。我还没有签出C99标准。
问题是,如果端点结构元素之间没有空格,那么该想法将行不通。
问题:
我说对了,实际上并不能保证它可以在C或C ++中运行。
这实际上可以用于任何已知的实现吗?换句话说,您知道在其中不起作用的任何实现吗?
是否有任何标准(我的意思不是特定于编译器的方式)表达相同的想法?也许C ++ 0x对齐功能可能有所帮助?
顺便说一句,这不是我在生产代码中正在做的事情,不用担心,只是好奇。提前致谢。
没有找到相关结果
已邀请:
4 个回复
浅镁
,而不仅仅是just7ѭ) 大多数编译器应支持使用编译指示或属性压缩结构。例如8ѭ。
慰泥悍瓶
希望这可以帮助。
死搭胯
先对冈蒲
与
基本相同。