Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Флейм > MS VC++ 6.0


Автор: GrayCardinal 3.5.2005, 15:23
struct locinfo_t {
WORD a;
WORD b;
unsigned int c;
char d;
} locinfo_t;

Угадайте с трех раз что выдаст sizeof (locinfo_t) smile
smile smile smile smile smile smile smile

Автор: Дрон 3.5.2005, 15:31
А в чём юмор-то?

Зависит от выравнивания и ещё от того 32 или 16-битный компилятор.
Но не меньше 7-байт это точно smile

Автор: GrayCardinal 3.5.2005, 15:42
Юмор в том, что это у меня заголовок в файле. Фиксированного размера. 9 байт. Это, допустим, для него структура, и чё ? шыш, а не прочитать.
Добавлено @ 15:42
ЗЫ. а как выравнивание ставить/убирать ?!

Автор: Дрон 3.5.2005, 15:56
Ну это не для флейма вопрос smile smile

#pragma pack(n)

где n - выравнивание

Автор: GrayCardinal 3.5.2005, 16:14
повробую, однако... но меня эта, извиняюсь жпа, просто убила. Я вроде б и не пил, а мне пишет шо 12 байт smile Я, конечно, подозревал что там выравнивание, но... после линукса как-то непривычно smile
И какое там выравнивание, если у меня 12 получилось ? smile что-то я недогоняю smile
Добавлено @ 16:15
ЗЫ
int - 4 байта. WORD - 2 char - 1 ПРОВЕРЯЛ через тот-же sizeof

Автор: dm9 3.5.2005, 16:57
2+2+4+1=9

9 округляем до n*4, получаем 12.

Автор: GrayCardinal 4.5.2005, 15:33
dm9
"ОКРУГЛЯЕМ" ?! Вот точно жпа. Никогда бы не догодался, однако. Я - то с дуру решил что каждая переменная выравнивается smile

ЗЫ
Попробовал, работает... м-дя. Спасибо Дрон'у, а то я извращался с char[4] вместо uint smile

Автор: simanyay 4.5.2005, 15:59
А что это ты начал под винду писать? Тоже ядро хачишь? smile

Автор: GrayCardinal 5.5.2005, 07:03
simanyay
smile Да не, на гребаной работе, на которой я уже не работаю грузили MS VC smile

PS
Ядро говоришь ... smile а где там ядро ? ... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)