Anonyme Strukturen in C im Unix-Kernel gefunden

Ich habe begonnen, den Lions-Kommentar zu Unix v6 zu lesen. Ich bin auf diese Schnipsel gestoßen, die ich in der C-Sprache noch nie gesehen habe. Der Autor gibt mir eine Erklärung, aber kann mir jemand erklären, was hier passiert?

params.h :

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

und dies verwendet inunix/prf.c

if(SW->integ == 0)

Erklärung des Autors

SW wurde zuvor als Wert 0177570 definiert. Dies ist die Kernel-Adresse eines Nur-Lese-Prozessorregisters, in dem die Einstellung des Konsolen-Umschaltregisters gespeichert ist. Die Bedeutung der Anweisung ist klar: Rufen Sie den Inhalt an Position 0177570 ab und prüfen Sie, ob er Null ist. Das Problem ist, dies in C auszudrücken. Der Codeif (SW == 0) hätte diese Bedeutung nicht vermittelt. DeutlichSW ist ein Zeigerwert, der dereferenziert werden sollte. Der Compiler wurde möglicherweise so geändert, dass er @ akzeptierif (SW-> == 0) aber so wie es ist, ist dies syntaktisch falsch. Durch die Erfindung einer Dummy-Struktur mit einem Elementinteg, der Programmierer hat eine zufriedenstellende Lösung für sein Problem gefunden.

Meine Frage ist vor allem, wie funktioniert das? Wenn der Compiler @ sieSW->integ, wie verbindet esSW mit der anonymen Struktur?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage