Цитата
Вы почему-то путаете не выровненный доступ CPU и работу си-компиляторов со структурами
Очевидно вы правы, я смешал 2 независимые вещи...
Что-то мне казалось что в зависимости от типа проца (от величины его выравнивания), среда задает такой же параметр паковки структур по умолчанию. Вероятно это скорее исключение чем правило, но мне сейчас кажется что я пару раз на такое нарывался...
Отсюда следуют не плотно лежащие данные структуры, а отсюда следуют проблемы при обращении в поля структуры через указатели памяти при всяких функциях пересылки, где структура представлена как байтовый массив, например.
Вот и теперь я понял откуда растут проблемы которые я пытался описать:
Когда с обоих концов стоит проц и язык С, проблемы реально мной надуманы. А вот когда у вас посылки делает проц с языком С, а приемник у вас ПЛИС с автоматом разбора входящего сообщения, вот тут проблемы не пакованных структур и вопросы понимания что как лежит в памяти встают в полный рост!
Также вот такой пример мне вспомнился
Код
struct __packed str
{
char A;
char B;
}
если есть функция передачи 1 поля структуры, по UART, например, то попытки разбора аля
Код
memcpy((void *)&my_str.B, data, 1);
также будут проблеммными, для процов с не байтным выравниванием