Цитата(sigmaN @ Jan 20 2018, 19:57)

Ну имеется ввиду, что существуют разные архитектуры процессоров. С разными требованиями по выравниванию данных. И даже с разным расположением байт в многобайтовых интах.
Таким образом описанная абсолютно одинаково на языке Си структура будет представлена в памяти совершенно по-разному!
Если обе системы и для приёма и для передачи будут применять простое копирование этого региона памяти в линию передачи данных то при неудачном стечении обстоятельств вы прините совсем не то что вам отправляли.
Например STM8 big endian - вообще редкость, скажем так.
На AVR требований по выравниванию нет и все поля структуры лягут в память по порядку без дыр.
На STM32 же между uint8 и uint32 в структуре будет padding т.е. дыра.
#pragma pack(1)
или __packed для описания структуры
вполне спасет от возможных дырок и будет гораздо проще чем заниматься сериализацией.
Цитата(sigmaN @ Jan 20 2018, 19:57)

По-моему в этом "что-то" как раз написано почему сериализацию лучше не делать.
По-моему весьма однозначно:
Цитата
WARNING
Если дорожишь эффективностью при передаче данных, то отдавай предпочтение бинарным протоколам (если, конечно, у тебя есть выбор).