sizeof и struct
От: Zlon  
Дата: 18.09.04 17:35
Оценка:
struct Frame {
unsigned char Sync;
double Temper;
};
В таком виде sizeof(Frame) дает 16
struct Frame {
//unsigned char Sync;
double Temper;
};
так 8
struct Frame {
unsigned char Sync;
//double Temper;
};
А так 1.
Почему выравнивание производится по размеру типа double . Из-за этого немогу нормально прочитать структуру из файла. Помогите плз.
А Вы думали в какой стране живете?
Re: sizeof и struct
От: _nn_  
Дата: 18.09.04 17:47
Оценка: 3 (1)
Здравствуйте, Zlon, Вы писали:

Z>struct Frame {

Z> unsigned char Sync;
Z> double Temper;
Z> };
Z>В таком виде sizeof(Frame) дает 16
Z>struct Frame {
Z> //unsigned char Sync;
Z> double Temper;
Z> };
Z>так 8
Z>struct Frame {
Z> unsigned char Sync;
Z> //double Temper;
Z> };
Z>А так 1.
Z>Почему выравнивание производится по размеру типа double . Из-за этого немогу нормально прочитать структуру из файла. Помогите плз.

Выравнивание устанавливается так:
#pragma pack(push,1)
struct Frame
{
 unsigned char Sync;
 double Temper;
};
#pragma pack(pop)
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: sizeof и struct
От: Burd Украина http://proxysearcher.sourceforge.net
Дата: 19.09.04 07:25
Оценка:
#pragma pack(1)
Любая задача имеет решение, даже когда решения не существует
Re: sizeof и struct
От: SWW Россия  
Дата: 19.09.04 17:19
Оценка:
Z>struct Frame {
Z> unsigned char Sync;
Z> double Temper;
Z> };
Z>В таком виде sizeof(Frame) дает 16

Попробуй так:
struct Frame { 
              double         Temper;  
              unsigned char  Sync;    
              };


В твоем случае, если установить выравнивание в 1 байт, будет неэффективное обращение к double
Re[2]: sizeof и struct
От: Zlon  
Дата: 19.09.04 17:55
Оценка:
К сожалению эту структуру в файл не я писал
Так что придется обращаться неэффективно
А Вы думали в какой стране живете?
Re[3]: sizeof и struct
От: Тигра Беларусь  
Дата: 20.10.04 13:26
Оценка:
Здравствуйте, Zlon, Вы писали:

Z>К сожалению эту структуру в файл не я писал

Z>Так что придется обращаться неэффективно

Только имей в виду, что

#pragma pack(1)


есть только в MSVC и, вообще, все прагмы компиляторо-зависимы.
Re[4]: sizeof и struct
От: Sir Wiz Россия  
Дата: 21.10.04 06:27
Оценка: 1 (1)
Здравствуйте, Тигра, Вы писали:

Т>Только имей в виду, что


Т>
Т>#pragma pack(1)
Т>


Т>есть только в MSVC

А ещё в Intel, Comeau и других подогнанных под VS
... << RSDN@Home 1.1.4 @@subversion >>
Re[5]: sizeof и struct
От: Sergeant Украина www.photomirror.com.ua
Дата: 21.10.04 06:33
Оценка:
Здравствуйте, Sir Wiz, Вы писали:

Т>>
Т>>#pragma pack(1)
Т>>


Т>>есть только в MSVC

SW>А ещё в Intel, Comeau и других подогнанных под VS

А как это сделать в gcc?
Курить я буду, но пить не брошу.
Re[6]: sizeof и struct
От: Linuxoid  
Дата: 21.10.04 06:49
Оценка: 2 (1)
Здравствуйте, Sergeant, Вы писали:

S>А как это сделать в gcc?


#pragma pack(1)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.