Анонимные структуры в C найдены в ядре Unix
Я начал читать комментарий Льва на Unix v6. Я наткнулся на эти фрагменты, которые я никогда не видел в языке Си. Автор дает какое-то объяснение, но может ли кто-нибудь объяснить мне, что здесь происходит?
params.h
:
SW 0177570
......
struct { int integ; };
и это используется вunix/prf.c
if(SW->integ == 0)
Пояснение автора
SW
предварительно определено как значение 0177570. Это адрес ядра регистра процессора, доступного только для чтения, в котором хранятся настройки регистра переключателя консоли. Смысл утверждения ясен: получите содержимое по адресу 0177570 и посмотрите, не равны ли они нулю. Проблема состоит в том, чтобы выразить это в C. Кодif (SW == 0)
не передал бы это значение. очевидноSW
это значение указателя, которое должно быть разыменовано Компилятор мог быть изменен для принятияif (SW-> == 0)
но в нынешнем виде это синтаксически неверно. Изобретая фиктивную структуру, с элементомinteg
Программист нашел удовлетворительное решение своей проблемы.
Мой вопрос, в основном, как это работает? Когда компилятор видитSW->integ
как это ассоциируетсяSW
с анонимной структурой?