[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
в С тип int соответствует длине машинного слова и, как правило (впрочем, исключения мне не известны), должен выравниваться в памяти на адрес, кратный длине слова в байтах (в данном случае четный). Первые два элемента имеют нечетную длину (в сумме), поэтому между вторым и третим эл-том будет "дырка" в один байт. (можете убедиться по значению sizeof(struct)).
во многих линковщиках есть опция выключения выравнивания, но тем не менее часто приходится делать следующее:
- объявить union {int,byte[sizeof(int)]}
- копировать повайтно элемент структуры в этот буфер
- работать со значением в буфере
E-mail: info@telesys.ru