0

给定一个假设的结构

struct OUTER {
  uint_16 x;
  struct INNER{
     uint_16 y;
     uint_16 z;
  } inner_struct;
} outer_struct;

和一个小端机器,字节将如何翻转,即outer_struct 的字节是什么样的?

假设 x,y,z = Ox1234;假设对齐 2 个字节。

我很困惑

34 12 34 12 34 12 // xyz

和,

34 12 12 34 12 34 // x 翻转-little_endian_inner_struct

4

2 回答 2

1

little endian 唯一翻转的是内置数据类型中的字节顺序。编译器不能自由地重新排序结构中的属性,并且字节序不适用于聚合数据结构(仅适用于它们的组件)。所以你会34 12 34 12 34 12在内存中看到结果。

于 2013-05-02T17:53:20.623 回答
0

结构成员本身的顺序不会根据编译器中的字节顺序移动。但是,您无法确定结构的任何特定部分究竟占用了多少字节,或者编译器在结构的各个部分之间添加了多少字节的填充。(我什至不确定您是否可以依赖它们处于“声明顺序”这一​​事实,但我相信标准中有一些关于此的内容)。

于 2013-05-02T17:34:01.350 回答