реклама на сайте
подробности

 
 
> __packed не работает?
slavokhire5
сообщение Jun 11 2015, 06:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 31-03-14
Из: Харьков
Пользователь №: 81 165



Привет всем. Заранее извиняюсь за дурацкий вопрос sm.gif

есть такая структура:
Код
typedef __packed struct _gap_init_rp{
    uint8_t            status;
    uint16_t        service_handle;
    uint16_t        dev_name_char_handle;
    uint16_t        appearance_char_handle;
} PACKED gap_init_rp;

....

gap_init_rp resp;


в чем суть проблемы: при работе с msp430f6xxx через IAR результат операции sizeof(resp) == 8 (!!!!), в то же время под stm32l0 также через IAR результат sizeof(resp) == 7 (что я считаю правильным).

И тот и тот IAR свежий, без кряков - kikstart.

Вероятно что-то не так в настройках?

UPD: видимо с __packed iar не очень дружит. или руки у меня кучерявые (вероятнее). помогло #pragma pack(push, 1)...pragma pack(pop)

думаю, тему можно удалять, особой ценности она не имеет

Сообщение отредактировал slavokhire5 - Jun 11 2015, 06:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Obam
сообщение Jun 12 2015, 09:53
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата
"…что вы мне пытаетесь доказать?…"

Вам? Зачем?
Я вопросом ответил TS, ответили вы, "и заверте…"
так что… вспомнился старый анекдот:"Дикутую по буквам Николай, Иван, Харит… - Н-И-Ч-Е-Г-О!"

Цитата
"Показанный вами кусок документации был не в тему - что такое выравнивание и как оно работает автор темы знает (перечитайте еще раз первое сообщение, чтобы понять это)."


Не в тему???

Цитата
"typedef __packed struct _gap_init_rp{
uint8_t status;
uint16_t service_handle;
uint16_t dev_name_char_handle;
uint16_t appearance_char_handle;
} PACKED gap_init_rp;

....

gap_init_rp resp;

в чем суть проблемы: при работе с msp430f6xxx через IAR результат операции sizeof(resp) == 8 (!!!!)…"


т.е. TS не удивился, что структура номинально из 7 байт, в памяти MSP430 имеет размер 8. Чётный.
Я привёл общее правило (и с переводом тоже), объясняющее результат.
Вот и всё. Не надо так реагировать, вы меня пугаете wink.gif

А первое сообщение даже процитировано.

И ещё забыл отметить: у 430-го слова (16 бит) всегда будут по чётным адресам, а у сравнивавшегося Cotrex-a могут распололагаться и
по нечетным.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 12 2015, 10:58
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Obam @ Jun 12 2015, 12:53) *
т.е. TS не удивился, что структура номинально из 7 байт, в памяти MSP430 имеет размер 8. Чётный.
А слово __packed он в этой структуре и в заглавии темы просто для красоты написал. Ага.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 15:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016