|
|
 |
Ответов
|
May 13 2008, 09:29
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
К примеру вот такая конструкция работает везде, и в Линукс и в Виндовс и на ПИКе и на АРМ. Код #ifdef __GNUC__ #define __PACKED_ATTR __attribute__ ((__packed__)) #else #define __PACKED_ATTR /*nothing*/ #ifndef __18CXX #pragma pack(push, 1) #endif #endif /* __GNUC__ */
typedef struct __GENERIC_CMD { unsigned char id; unsigned short status; unsigned char reserved[6]; } __PACKED_ATTR GENERIC_CMD, *PGENERIC_CMD;
#ifndef __GNUC__ #ifndef __18CXX #pragma pack(pop) #endif #endif
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
May 13 2008, 18:29
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(Сергей Борщ @ May 13 2008, 14:05)  Эту ветку не читал раньше, но использую похожый подход. Имеется фыйл osdep.h в котором проводится анализ текущего компилятора, ОС и пр. Из него включаются платформенно-зависимые типа lnxdeps.h, windeps.h armdeps.h и пр. Показанный по этой ссылке метод с макросом мне кажется еще более удобным. Прилагаю пример таких файлов. Эти файлы размещаются в репозитарии в папке osdep  и потом нужно только #include <osdep/osdep.h> и все. Если к этому добавить макрос (по ссылке поста) то очень даже красиво и просто.
Прикрепленные файлы
osdep.zip ( 3.36 килобайт )
Кол-во скачиваний: 48
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
Сообщений в этой теме
Andy Sm. sizeof() странно себя ведёт... May 12 2008, 12:49 diper Цитата(Andy Sm. @ May 12 2008, 16:49) Кто... May 12 2008, 12:54 sff Цитата(Andy Sm. @ May 12 2008, 16:49) есл... May 12 2008, 13:13 etoja В ГНУ компиляторе #pragma pack(1) не работает.
Исп... May 12 2008, 13:17 alexander55 Цитата(Andy Sm. @ May 12 2008, 16:49) Кто... May 12 2008, 13:19 Andy Sm. В общем, __attribute__ в разных вариациях не помог... May 12 2008, 13:47 r301 попробуйте делать typedef отдельно от packed. Пров... May 12 2008, 14:47 sergeeff Тут большой вопрос, что такое "правильно... May 12 2008, 19:42 alexander55 Цитата(sergeeff @ May 12 2008, 23:42) Сох... May 13 2008, 04:30 VAI ЦитатаТут большой вопрос, что такое "правильн... May 13 2008, 03:11 sergeeff Так значит вопрос состоит все таки в том, чтобы до... May 13 2008, 08:42 Andy Sm. вообще говоря, вопрос был про то как сказать gcc к... May 15 2008, 10:07 ISK2010 Тоже столкнулся с выравниванием, которое в моей си... Feb 8 2011, 07:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|