Страниц: [1]
  Печать  
Автор Тема: Структура заданного размера  (Прочитано 6294 раз)
QNX Worker
Jr. Member
**
Offline Offline

Сообщений: 99


Просмотр профиля
« : Марта 27, 2009, 10:12:21 am »

Всем доброго времени суток Smiley

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

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

P.S. У меня есть одно решение такой задачи, но уж больно оно громоздкое. Т.е. все данные переменных залить в массив типа char *, тем самым получив полезное поле данных нужного размера.
« Последнее редактирование: Марта 27, 2009, 10:16:19 am от QNX Worker » Записан
A_O
Full Member
***
Offline Offline

Сообщений: 212


Просмотр профиля
« Ответ #1 : Марта 27, 2009, 10:46:39 am »

#pragma pack(...)

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

#include <_pack1.h>
    struct ... { .... };
#include <_packpop.h>
Записан
QNX Worker
Jr. Member
**
Offline Offline

Сообщений: 99


Просмотр профиля
« Ответ #2 : Марта 27, 2009, 11:01:52 am »

Большое спасибо! Сейчас попробую. Smiley
Записан
QNX Worker
Jr. Member
**
Offline Offline

Сообщений: 99


Просмотр профиля
« Ответ #3 : Марта 27, 2009, 11:28:34 am »

Заработало!  Cheesy
Большой респект!!!
Записан
qnxloder
Sr. Member
****
Offline Offline

Сообщений: 292


Просмотр профиля
« Ответ #4 : Марта 27, 2009, 04:32:41 pm »

Здорово, вот бы и у меня получилось...........):
Записан
ed1k
QOR.Moderator
*****
Offline Offline

Сообщений: 739


Просмотр профиля WWW
« Ответ #5 : Марта 27, 2009, 05:43:10 pm »

Код:
struct __attribute__((packed)) _data{
char a;
short b;
} data;
doesn't work? what version of GCC?
Записан
Страниц: [1]
  Печать  
 
Перейти в: