QNX.ORG.RU

Разработка => Языки и алгоритмы => Тема начата: QNX Worker от Марта 27, 2009, 10:12:21 am



Название: Структура заданного размера
Отправлено: QNX Worker от Марта 27, 2009, 10:12:21 am
Всем доброго времени суток :)

Что-то вчера вечером запутался малость в такой задаче:
Имеется структура типа:
Код:
struct data_{
   char a;
   short b;
}data;
Размер структуры равен 4 байта, т.к. добавляется дополнительный нулевой байт после char a для однородности данных.

Задача такая: можно ли сделать структуру именно такого типа, но чтобы ее размер, выводимый sizeof(data), был равен 3 байта, без добавления нулевого байта?

P.S. У меня есть одно решение такой задачи, но уж больно оно громоздкое. Т.е. все данные переменных залить в массив типа char *, тем самым получив полезное поле данных нужного размера.


Название: Re: Структура заданного размера
Отправлено: A_O от Марта 27, 2009, 10:46:39 am
#pragma pack(...)

Или (если речь идет о qnx6 и компиляторе GNU)

#include <_pack1.h>
    struct ... { .... };
#include <_packpop.h>


Название: Re: Структура заданного размера
Отправлено: QNX Worker от Марта 27, 2009, 11:01:52 am
Большое спасибо! Сейчас попробую. :)


Название: Re: Структура заданного размера
Отправлено: QNX Worker от Марта 27, 2009, 11:28:34 am
Заработало!  :D
Большой респект!!!


Название: Re: Структура заданного размера
Отправлено: qnxloder от Марта 27, 2009, 04:32:41 pm
Здорово, вот бы и у меня получилось...........):


Название: Re: Структура заданного размера
Отправлено: ed1k от Марта 27, 2009, 05:43:10 pm
Код:
struct __attribute__((packed)) _data{
char a;
short b;
} data;
doesn't work? what version of GCC?