Название: Нужна помощь по _Pragma() Отправлено: makar77 от Март 31, 2015, 22:46 В файл .pro добавляю следующее:
Код: DEFINES+=Q_PACKED_START=_Pragma(\"pack(push,1)\"); Например в заголовочный файл добавляю: Код: Q_PACKED_START При сборке выдается ошибка "_Pragma takes a parenthesized string literal Q_PACKED_START" Если сделать вот так(убрать из файла .pro макросы и добавить в заголовочный файл): Код: #define Q_PACKED_START _Pragma("pack(push,1)"); На мой взгляд разницы никакой, а результат разный.Помогите советом (всю голову уже сломал), нужен именно первый вариант! Название: Re: Нужна помощь по _Pragma() Отправлено: makar77 от Апрель 01, 2015, 09:53 Как говорят "утро, вечера мудренее", ответ на мой вопрос нашелся сам, видимо из-за особенностей работы компилятора (лексического разбора make файлов) , надо в .pro файле вот так делать:
Код: DEFINES+=Q_START_PACKED=_Pragma(\\\"pack(push,1)\\\"); Название: Re: Нужна помощь по _Pragma() Отправлено: Пантер от Апрель 01, 2015, 09:54 Это особенности qmake скорее.
Название: Re: Нужна помощь по _Pragma() Отправлено: makar77 от Апрель 01, 2015, 10:05 qmake создаёт нормальный make файл, без проблем:
Код: DEFINES= -DUNICODE -DQ_START_PACKED=_Pragma("pack(push,1)"); -DQ_STOP_PACKED=_Pragma("pack(pop)"); -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN В консоли сборки тоже всё хорошо. Название: Re: Нужна помощь по _Pragma() Отправлено: Пантер от Апрель 01, 2015, 10:08 Кстати, не советую использовать названия типа Q_*, они применяются в Кьюте. Прикинь, если в следующей версии они введут такой же макрос, но он будет совершенно не то делать.
|