Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Почему MINGW размер структуры считает не как GCC


Автор: duzeev 27.8.2015, 23:01
Почему MINGW размер структуры считает не как GCC?

    struct TT
    {
        unsigned char i:1;
        unsigned char e:15;
    } __attribute__((__packed__)) ;


разве sizeof(TT) не должен быть равен 1, почему он равен 3

Автор: feodorv 28.8.2015, 01:42
Цитата(duzeev @  27.8.2015,  23:01 Найти цитируемый пост)
Почему MINGW размер структуры считает не как GCC?
А что это такое
Цитата(duzeev @  27.8.2015,  23:01 Найти цитируемый пост)
        unsigned char e:15;
???

Вообще, как я понимаю, mingw в вопросе выравнивания структур настроен на совместимость с MS Visual C++, а не с gcc (см. опцию -mno-ms-bitfields). 

Автор: volatile 28.8.2015, 12:51
Цитата(duzeev @  27.8.2015,  23:01 Найти цитируемый пост)
unsigned char e:15;
Размер поля превышает ширину его типа

Цитата(ISO_IEC_14882_2011)
9.6 Bit-fields
... The value of the integral constant expression may be larger than the number of bits in the object representation of the bit-field’s type;
in such cases the extra bits are used as padding bits and do not participate in the value representation of the bit-field.

следовательно
Цитата(duzeev @  27.8.2015,  23:01 Найти цитируемый пост)
разве sizeof(TT) не должен быть равен 1
Нет не должен.
(если конечно размер чара у вас не больше 15 бит smile )


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