Это будет очень хорошо работать на 36-битном компьютере. Вы забыли сообщить нам, если это то, что вы получили ...
На более распространенной 32-битной машине использование 9-байтового выравнивания было бы очень трудно реализовать. Если вы создадите массив этих структур, вам потребуется другой код для доступа к полям в объекте с адресом по модулю 0 и с адресом по модулю 9.
12 битов первых трех полей должны быть получены из разных unsigned
с и по-разному в зависимости от адреса.
Директивы упаковки в других ответах вряд ли сработают, если только у вас нет аппаратного обеспечения с битовой адресацией (или 36-битного ЦП).