Думаю что в тему. Чтоб не парится с прагмапаками, прагмапушами и прагмапопами или аналогичными вещами - нужно усвоить архизнаниё !

.
Все базовые (интежер) типы данных компиляторы размещают по адресам кратным их размерности (это для 16 битных и 32 битных компиляторов). При создании структур желательно не микшировать подряд и в праполую char, short и long.
Настоятельно рекомендую сортировать в типовом порядке от 4 байтных - до 1 байтных, Причём при переходе типов самостоятельно дополнять нужными полями нужной размерности.
Пример создания структуры состоящей из фиксированного набора параметров, например три 4 байтных, два 2 байтных и одного однобайтного:
Хорошо:------------------Не хорошо------------------------------------Не хорошо
long------------------------char------------------------------------------- short
long------------------------short (впереди выравнивание + 1)-------- long (впереди выравнивание + 2)
long------------------------long------------------------------------------- short
short-----------------------long-------------------------------------------- long (впереди выравнивание + 2)
short-----------------------long-------------------------------------------- char
char------------------------short------------------------------------------- long (впереди выравнивание + 3)
-----------------------------------------------------------------------------------------------------------------------------
17 байт--------------------18 байт-----------------------------------------24 байт
В случае примеров "не хорошо" - дополнять руками какими нибудь типовыми полями по нужной размерности

, чтоб компилятор не делал это за вас.
Сообщение отредактировал картошка - Feb 21 2018, 12:53