【发布时间】:2013-12-08 05:42:08
【问题描述】:
在下面的例子中调用float z = data.AllCoordinates()[2]总是省钱吗?
struct Data {
// data members
float x, y, z;
// data members
float* AllCoordinates() { return &x; }
} data;
如果不是,如何保证结构成员之间没有间隙?所以结构的一部分可以像数组一样使用。
【问题讨论】:
-
*保证。你不能,至少不能以标准方式。非标准扩展包括可怕的
__attribute__((packed))等,但即使在那时我也不确定这是否是未定义的行为。只是不要这样做。