powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
10 сообщений из 10, страница 1 из 1
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38673599
youmych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собирал проект на Qt/C++11, где ведется работа с сетью mingw32 из релиза Qt 5.2.1.
Наткнулся на непонятное поведение компилятора. Вот такой код для проверки

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
struct __attribute__((packed)) test {
    uint16_t a;
    uint32_t b;
    uint16_t c;
    uint32_t d;
};

// вот тут ассерт не проходит. Проходит с размером в 16 байт. 
static_assert( sizeof(test) == (2+4+2+4), "test aligned incorrect" ); 



Тот же код прекрасно проходит проверку на g++ 4.6 - 4.8 на всех моих линуксах 32 и 64 бит, и в онлайн-компиляторах, которве используются для примеров на cppreference.com

У кого еще так же? Это баг сборки mingw?
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38673610
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, похоже на баг в MinGW сборке.
__attribute__((packed)) на такой структуре выдает 16.
#pragma pack(1) и #pragma pack(2) делают 12-и байтовую структуру.

Проверял на
gcc version 4.8.1 (GCC)
Thread model: win32
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38673691
youmych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, спасибо за проверку.

И за #pragma pack. Почему-то считал, что эта конструкция только для MSVC. А давно ли оно в gcc?
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38673699
youmych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати
Код: plaintext
1.
2.
3.
__attribute__((align(1))) 
и
__attribute__((align(2))) 


тоже дают 16 байт. Пишем баги, ловим глюки...
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38673704
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
youmychИ за #pragma pack. Почему-то считал, что эта конструкция только для MSVC. А давно ли оно в gcc?Да всегда была. Во всяком случае в 2.с-чем-то точно уже было.
Я собственно говоря никогда __attribute__(packed) и не использовал. Всегда, если надо было вручную управлять упаковкой, использовал pragma pack.
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38674295
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 18.06.2014 21:45, youmych wrote:

> У кого еще так же? Это баг сборки mingw?

Лучше всего обратиться по этому поводу к автору сборки, niXman, на RSDN.ru.

Там есть топик специальный для этого:

http://rsdn.ru/forum/cpp.applied/4579012.1
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38674551
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

Код: plaintext
1.
2.
3.
4.
5.
6.
struct test {
    uint16_t a;
    uint32_t b;
    uint16_t c;
    uint32_t d;
} __attribute__((packed)) ;
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38674680
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyА так?

Код: plaintext
1.
2.
3.
4.
5.
6.
struct test {
    uint16_t a;
    uint32_t b;
    uint16_t c;
    uint32_t d;
} __attribute__((packed)) ;

Тоже самое. Позиция __attribute__((packed)) влияет только на enum.
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38674719
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
youmychКстати
Код: plaintext
1.
2.
3.
__attribute__((align(1))) 
и
__attribute__((align(2))) 



тоже дают 16 байт. Пишем баги, ловим глюки...
Это не баг. align относится к структуре в целом (не влияет на размещение полей). И он не может уменьшить выравнивание структуры, только увеличить.
...
Рейтинг: 0 / 0
Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
    #38675243
youmych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЛучше всего обратиться по этому поводу к автору сборки, niXman, на RSDN.ru.

Там есть топик специальный для этого:

http://rsdn.ru/forum/cpp.applied/4579012.1


А разве он автор официального релиза qt-opensource-windows-x86-mingw48_opengl-5.2.1 ?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Баг mingw32-g++ (gcc 4.8) который идет с Qt 5.2.1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]