Здравствуйте, artem_korneev, Вы писали:
_>Столкнулся сегодня с одной проблемой. Есть структура данных, состоящая из нескольких полей — 64-битный float, потом 8 unsigned char и один Int32. Итого получается 20 байт (8 + 8*1 + 4). Под 32-битными системами sizeof равен 20 и всё работает нормально. А под 64-битным Linux'ом sizeof возвращает 24. Т.е. идёт выравнивание по границе 64 бит. Я пробовал добавлять в конец структуры директиву align:
aligned, а не align
http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type-Attributes
а вообще вам надо:
struct my_packed_struct {
...
} __attribute__ ((__packed__));
my_packed_struct sss;