Спасибо всем ответившим.
Но сомнения остались:
Цитата
Но надо учитывать, что при разнотипных данных, они могут быть выровнены по длине наибольшего. Т.е. если между двумя int16 затешеться int8 компилятор дополнит его до 16 бит нулями.
Обычно это некритично, но при обмене по последовательному каналу может неожиданно измениться длина посылки и смещение от начала. Следите за настройками компилятора.
Кстати в моей структуре смешаны
unsigned int и
unsigned longКод
struct TParameters
{
unsigned int ADC_Value;
unsigned int temperature[2];
unsigned long suit;
unsigned int CRC16;
};
struct TParameters Parameters;
Это вызовет выравнивание до
unsigned long?
Цитата
Только не с AVR. Это семейство 8-битное и выравнивания данных в структурах не осуществляется.
Вот с ARM - другое дело.
Т.е. если я одинаковую структуру подсуну разным компиляторам(для разного железа, напр. AVR и IBM PC), то при обмене структурами через UART посредством указателя, я получу несовместимые друг с другом системы?
Как же тогда быть?
Истина рождается в спорах; но когда страсти кипят, истина испаряется.