Estruturas anônimas em C encontradas no Unix Kernel

Comecei a ler o Comentário Leonístico sobre o Unix v6. Me deparei com esses trechos, que nunca vi usados na linguagem C. O autor fornece algum tipo de explicação, mas alguém poderia me explicar o que está acontecendo aqui?

params.h :

SW 0177570
...... 
struct { int integ; };

e isso usado emunix/prf.c

if(SW->integ == 0)

Explicação do autor

SW é definido anteriormente como o valor 0177570. Este é o endereço do kernel de um registro de processador somente leitura que armazena a configuração do registro de chave do console. O significado da instrução é claro: obtenha o conteúdo no local 0177570 e veja se eles são zero. O problema é expressar isso em C. O códigoif (SW == 0) não teria transmitido esse significado. ClaramenteSW é um valor de ponteiro que deve ser desreferenciado. O compilador pode ter sido alterado para aceitarif (SW-> == 0) mas, como está, isso é sintaticamente incorreto. Ao inventar uma estrutura fictícia, com um elementointeg , o programador encontrou uma solução satisfatória para seu problema.

Minha pergunta é principalmente como isso funciona? Quando o compilador vêSW->integ, como ele associaSW com a estrutura anônima?

questionAnswers(1)

yourAnswerToTheQuestion