Перейти к содержанию
    

Как правильно выровнять внутри структуры ?

Делаю проект внутри AVR Studio

что то мне говорит, что компилятор все выравнивает по 4 байта

 

у меня есть структура, описаная примерно так:

 

    typedef struct {
u8 len;  /* Длина пакета без контрольной суммы */
       u32 sec;/* Таймер - время первого измерения     */   
       u16 msec;/* миллисекунда первого измерения в пакете */

     struct {  /* Акселерометр - три координаты ускорений */
     	    u32 acc_x;
    u32 acc_y;
    u32 acc_z;
} data[20];
u16 crc16;
   } acc_pack;

 

не хочет он писать внутрь u16, гадит.

другие подобные структуры, где вперемешку идут u8 u16 u32 так же гадятся.

есть какое нибудь решение для этого компилятора, подобные #pragma pack(1)?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Компилятор все равно же GCC.

Пишите #pragma pack( 1 )

не работает pragma pack

на avrfreaks.net подсказали:

 

Declare your structs like this:

 

Code:

typedef struct
{
 ...
....
...

}__

attribute__ ((packed)) tstSomeStruct;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с похожей проблемой в IAR. Тоже выравнивает структуру по 4 байта. Выход такой:

__packed typedef struct
{
...
};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с похожей проблемой в IAR. Тоже выравнивает структуру по 4 байта. Выход такой:

__packed typedef struct
{
...
};

 

Не, вот так :

typedef __packed struct
{
...
};

 

Или #pragma pack(1)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...