Другие уже указывали, что в дополнение к заполнению размеры типов могут варьироваться в зависимости от архитектуры.В дополнение к этому, порядок байтов также может варьироваться (не между 32- и 64-битными процессорами Intel, но, если его выбросят другие, это может стать проблемой).
Так что сериализация - хорошая идея.В основном просто создайте функцию для записи и одну для чтения для каждой архитектуры.
Функция записи будет записывать каждый соответствующий байт каждого элемента структуры, причем элементы записываются в известном порядке, а байты каждого элемента также в известном порядке (скажем, наиболее значимым первым).Если размеры типа варьируются между платформами, запишите столько байтов типа, сколько будут поддерживать все платформы.
Функция чтения должна делать обратное тому, что делает функция записи, и обнулять любые байты, которые не включены в сериализованные данные.Функции не сложны в написании, и их использование делает ненужным заполнение, порядковый номер и (часто) размеры основных типов.