А я думал юнион и структура больше похожи :-)
Вот короткий юнион содержит всего несколько бит и имеет sizeof(str) один байт. А заменить слово union на struct то размер уже 2 байта.
Оказыватся безимянное поле с длиной 0 бит для структуры работает как перевод строки (переходит к следующему элементу размещения). А для юниона нет. Где бы это могло быть полезно?
union type_str
{
unsigned char b0 : 1,
: 1,
: 1,
: 0,
: 1,
: 1;
}str;