Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему MINGW размер структуры считает не как GCC, Почему MINGW размер структуры считает не 
:(
    Опции темы
duzeev
Дата 27.8.2015, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.7.2006

Репутация: нет
Всего: нет



Почему MINGW размер структуры считает не как GCC?

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


разве sizeof(TT) не должен быть равен 1, почему он равен 3
PM MAIL   Вверх
feodorv
Дата 28.8.2015, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(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). 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volatile
Дата 28.8.2015, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(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 )


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.