![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Анна |
![]()
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 276 Регистрация: 22.5.2008 Из: Зеленоград Пользователь №: 181 Спасибо сказали: 30 раз(а) Репутация: ![]() ![]() ![]() |
Люди, помогите, пожалуйста!
Ко мне приходят заголовочные файлы с конструкцией (человек пишет под Linux)
Мне надо обернуть этот код конструкцией #pargma pack, чтобы собирать и под Линуксом + gcc и под виндой + MSVS. Причём конструкцию для Линукса просили не трогать. Читала описание __attribute__, искала примеры. Везде примеры без typedef. Поскольку пишу под Qt, то выдумала следующий код
Вроде бы работает, но меня не покидает ощущение, что что-то я сделала не так, или можно было покрасивее. В том числе смущает ещё и тот момент, что в описании __attribute__ сказано, что он ставится в конце, то есть после MyStruct, но раз с "той стороны" пришла такая конструкция, то хотелось бы просто понять, почему сделано так, а не по оприсанию. Может кто-нибудь что-нибудь предложить? И, вообще, хотелось бы посмотреть на варианты объявления структур с упаковкой и для "того" и для "другого", с typedef и без typedef. |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Вроде бы работает, но меня не покидает ощущение, что что-то я сделала не так, или можно было покрасивее. Лучшее враг хорошего, но тут правда есть что улучшить, поскольку __attribute__ это специфика GCC, а pragma - студии, то что вы будете делать когда кто то будет собирать ваш код под виндой с помощью например mingw? ![]() Лучше использовать дефайны, определяющие компилятор, а не систему, например: _MSC_VER __GNUC__ Хотя и gcс в общем то поддерживают прагму. https://gcc.gnu.org/onlinedocs/gcc-4.3.1/gc...ng-Pragmas.html |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 1:31 |