Estructuras anónimas en C encontradas en Unix Kernel

He comenzado a leer el Comentario de los Leones sobre Unix v6. Me encontré con estos fragmentos, que nunca he visto utilizados en el lenguaje C. El autor proporciona algún tipo de explicación, pero ¿alguien podría explicarme qué está pasando aquí?

params.h :

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

y esto usado enunix/prf.c

if(SW->integ == 0)

Explicación del autor.

SW se define previamente como el valor 0177570. Esta es la dirección del núcleo de un registro de procesador de solo lectura que almacena la configuración del registro del conmutador de consola. El significado de la declaración es claro: obtenga los contenidos en la ubicación 0177570 y vea si son cero. El problema es expresar esto en C. El códigoif (SW == 0) no habría transmitido este significado. ClaramenteSW es un valor de puntero que debe ser desreferenciado. El compilador podría haber sido cambiado para aceptarif (SW-> == 0) pero tal como está, esto es sintácticamente incorrecto. Al inventar una estructura ficticia, con un elementointeg , el programador ha encontrado una solución satisfactoria a su problema.

Mi pregunta es principalmente ¿cómo funciona esto? Cuando el compilador veSW->integ, cómo se asociaSW con la estructura anonima?

Respuestas a la pregunta(1)

Su respuesta a la pregunta