[an error occurred while processing this directive] [an error occurred while processing this directive]
предположение абсолютно верное
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено VZ 10 декабря 2001 г. 13:32
В ответ на: Подскажите, плиз, по указателям в С... (+) отправлено AndyBig 10 декабря 2001 г. 13:03

в С тип int соответствует длине машинного слова и, как правило (впрочем, исключения мне не известны), должен выравниваться в памяти на адрес, кратный длине слова в байтах (в данном случае четный). Первые два элемента имеют нечетную длину (в сумме), поэтому между вторым и третим эл-том будет "дырка" в один байт. (можете убедиться по значению sizeof(struct)).

во многих линковщиках есть опция выключения выравнивания, но тем не менее часто приходится делать следующее:
- объявить union {int,byte[sizeof(int)]}
- копировать повайтно элемент структуры в этот буфер
- работать со значением в буфере

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru