Пока все элементы «исправлены» во время компиляции, вы будете в безопасности. Тем не менее, ваш код будет трудно поддерживать, и, как правило, таких действий следует избегать. Это рискует связать ваш код с определенной архитектурой, поскольку в конечном итоге одно из полей изменится, создавая проблемы, если все остальные вычисленные смещения не будут соответствующим образом обновлены.
Поскольку код имеет тенденцию жить дольше, чем мы думаем, шансы, что некоторые усилия по обслуживанию в конечном итоге исправят одно из значений, почти наверняка. Это нанесло бы ущерб (намного позже) обновлению порядка полей.
Я сохранил такой код. Я рекомендую сделать это по-другому, без необходимости знать точное выравнивание полей в коде.