Почему sem_t представлен именно в виде union?
Изучая синхронизацию, обнаружил, что sem_t в заголовочном файле bits/semaphore.h представлен в виде union:
typedef union
{
char __size[__SIZEOF_SEM_T];
long int __align;
} sem_t;
Для чего же был выбран именно union, а не например struct? Какие у него есть преимущества в данном случае?
Благодарю заранее за ответ