inventor 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Господа, подскажите как мне правильно сделать: /** * Пакет данных на отправление - 20 измерений акселерометра - 240 байт, упакован на 1!!! */ #pragma pack(1) typedef struct { u8 len; /* Длина пакета без контрольной суммы */ u8 adc; /* Номер работающих АЦП - четыре бита подряд */ u16 msec; /* Миллисекунда первого измерения */ u32 sec; /* UNIX TIME первого измерения */ struct { /* 3-х байтный пакет (* 4) */ unsigned x:24; unsigned y:24; unsigned z:24; unsigned h:24; } data[NUM_ADS1282_PACK]; u16 rsvd; /* Выравнивание, чтоб по 4 байтному адресу все было */ u16 crc16; /* Контрольная сумма пакета */ } ADS1282_PACK_STRUCT/* __attribute((packed)) */; ни #pragma pack(1) ни __attribute((packed)) не хотят работать. размер структуры 252 байт, при компиляции в Linux-64 пишет что 256 и ругается что мол атрибут packed проигнорирован как все это правильно упаковать в этой операционке? Все решено :) 1) u32 у меня ошибочно был объявлен дефиницией как unsigned long, надо было uint32_t 2) структура внутри структуры то же должна быть с __attribute__((packed)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться