По понятным и понятным причинам, размер X
и Y
не может быть равным четырем (если бы это было возможно, X
имел бы несколько определений, обычное заполненное одно и одно, где заполнение используется char
из Y
). Таким образом, единственный способ Y
может быть равен 4, если X
были изменены, чтобы исключить его заполнение. Это может быть сделано с помощью специальных прагм или директив компилятора. Тем не менее, поскольку это может привести к тому, что к X
будет получен доступ без выравнивания, это фактически ограничит возможную переносимость вашей программы (некоторые архитектуры могут даже потерпеть крах, если будут выполнены смещенные обращения).
Вместо этого, вы можете более четко объяснить конечный результат, который вы надеетесь достичь здесь?