[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Выравнивание структур - одна из наиболее частых причин потенциальной непереносимости. Среди других
- преобразование типов (в т.ч. через 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