Re: gcc, Выравнивание на 64-битных архитектурах
От: Аноним  
Дата: 22.04.09 14:30
Оценка: 29 (1) +1
Здравствуйте, 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.