Здравствуйте, гость ( Вход | Регистрация )
|
Анна |
12.4.2017, 14:39
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: 4
|
Люди, помогите, пожалуйста!
Ко мне приходят заголовочные файлы с конструкцией (человек пишет под Linux) Мне надо обернуть этот код конструкцией #pargma pack, чтобы собирать и под Линуксом + gcc и под виндой + MSVS. Причём конструкцию для Линукса просили не трогать. Читала описание __attribute__, искала примеры. Везде примеры без typedef. Поскольку пишу под Qt, то выдумала следующий код Вроде бы работает, но меня не покидает ощущение, что что-то я сделала не так, или можно было покрасивее. В том числе смущает ещё и тот момент, что в описании __attribute__ сказано, что он ставится в конце, то есть после MyStruct, но раз с "той стороны" пришла такая конструкция, то хотелось бы просто понять, почему сделано так, а не по оприсанию. Может кто-нибудь что-нибудь предложить? И, вообще, хотелось бы посмотреть на варианты объявления структур с упаковкой и для "того" и для "другого", с typedef и без typedef. |
|
|
|
![]() |
|
Алексей1153 |
12.4.2017, 18:16
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
попробуй так
в линуксе это тоже какой-то дефайн, видимо а вообще в C++ вот так уже не модно делать: вот так моднее ) Анна, и вопрос - зачем тебе выравнивание на 1 байт ? Это нужно обычно в случае работы с железякой или старыми структурами, то есть там, где байты должны быть чётко на своих местах без фантазий компилятора Сообщение отредактировал Алексей1153 - 12.4.2017, 18:14 |
|
|
|
Анна #pragma pack и __attribute__ 12.4.2017, 14:39
lanz ЦитатаВроде бы работает, но меня не покидает ощуще... 13.4.2017, 9:30
Алексей1153 lanz, mingw тоже понимает #pragma pack 13.4.2017, 10:16
Анна Цитата(Алексей1153 @ 12.4.2017, 18:16) по... 13.4.2017, 13:19![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 28.12.2025, 18:04 |