[an error occurred while processing this directive] [an error occurred while processing this directive]
Переносимость
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено smav 17 апреля 2002 г. 17:59
В ответ на: Помогите!!! Проблема с компилятором IAR для MSP430 - как обойти выравнивание? (+) отправлено Беня 16 апреля 2002 г. 19:07

Выравнивание структур - одна из наиболее частых причин потенциальной непереносимости. Среди других
- преобразование типов (в т.ч. через union)
- размеры встроенных типов (int,char) - если они критичны, следует использовать int8_t,int16_t и т.д. из файла intdefs.h
- размеры перечислений
Наиболее общее решение - локализовать опасные места в отдельном
модуле, использовать условную трансляцию.
В твоем случае, как я понял, критичными являются только прием и передача данных - в этом месте должно быть преобразование их в/из структуру
типа того:
void getPacket(str* packet)
{
#ifdef use_align
char buf[packet_size];
readData(buf,packetSize);
memcpy(buf,str->ch1,ch1_size);
memcpy(buf+ch1_size,str->ch2,ch2_size);
#else
readData(str,packetSize);
#endif
Аналогично и с передачей пакета.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru