немного порядковый номер структуры в структуре

Учитывая гипотетическую структуру

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

и немного порядка байтов, как будут переворачиваться байты, то есть как будут выглядеть байты для external_struct?

Предположим, что x, y, z = Ox1234; Предположим, выравнивание 2 байта.

Я запутался между

34 12 34 12 34 12 // x y z

а также,

34 12 12 34 12 34 // x flipped-little_endian_inner_struct

0

Решение

Единственное, что бросает в обратном порядке, это порядок байтов во встроенных типах данных. Компилятор не может свободно переупорядочивать атрибуты в вашей структуре, а endian-ness не распространяется на совокупные структуры данных (только их компоненты). Итак, вы увидите 34 12 34 12 34 12 как результат в памяти.

1

Другие решения

Порядок самих членов структур не изменяется в зависимости от порядка в компиляторе. Однако вы не можете быть уверены, сколько именно байтов занимает какая-то конкретная часть вашей структуры или сколько байтов заполнения компилятор добавляет между частями структуры. (Я даже не уверен, что вы можете положиться на тот факт, что они находятся в «порядке декларирования», но я считаю, что в стандарте есть что-то об этом).

0

По вопросам рекламы [email protected]