Re[2]: Выравнивание полей структур
От: Bujum  
Дата: 11.11.03 06:54
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Bujum, Вы писали:


B>>имеется структура следующего вида:


B>>
B>>struct Foo
B>>  {
B>>  BYTE  a;
B>>  DWORD b;
B>>  };
B>>


B>>Ессно sizeof(Foo) возвращает не 5. (У меня 8).

B>>В настройках VC7: Struct member alingment — default. (1 byte не предлагать)

OE>ну поставь не в настройках, а только для этой структуры:


OE>
OE>#pragma pack (push, 1)
OE>struct Foo
OE>{
OE>  BYTE  a;
OE>  DWORD b;
OE>};
OE>#pragma pack (pop)
OE>


OE>если она пишется с выравниванием в 1 байт, другого выхода у тебя все равно нет



а если будет так:

struct Foo
{
  BYTE a;
  DWORD b;
};

struct DerFoo
: public Foo
{
  WORD c;
};


насколько я понимаю теперь читать напрямую в структуру не только сложно, но и опасно. Ведь первые байты
в ней указатель на Foo. Как быть в это случае?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.