Лексическая область действия идентификаторов, описанныхво внешних определениях, простирается от определения до кон-ца исходного файла, в котором он находится. Лексическая об-ласть действия идентификаторов, являющихся формальными пара-метрами, распространяется на ту функцию, к которой они отно-сятся. Лексическая область действия идентификаторов, описан-ных в начале блока, простирается до конца этого блока. Лек-сической областью действия меток является та функция, в ко-торой они находятся. Поскольку все обращения на один и тот же внешний иденти-фикатор обращаются к одному и тому же объекту (см. П. 19.2),Компилятор проверяет все описания одного и того же внешнегоидентификатора на совместимость; в действительности их об-ласть действия распространяется на весь файл, в котором онинаходятся. Во всех случаях, однако, есть некоторый идентификатор,явным образом описан в начале блока, включая и блок, которыйобразует функцию, то действие любого описания этого иденти-фикатора вне блока приостанавливается до конца этого блока. Напомним также (п. 16.5), Что идентификаторы, соответст-вующие обычным переменным, с одной стороны, и идентификато-ры, соответствующие членам и ярлыкам структур и объединений,с другой стороны, формируют два непересекающихся класса, ко-торые не вступают в противоречие. Члены и ярлыки подчиняютсятем же самым правилам определения областей действия, как идругие идентификаторы. Имена, специфицируемые с помощьюTYPEDEF, входят в тот же класс, что и обычные идентификато-ры. Они могут быть переопределены во внутренних блоках, ново внутреннем описании тип должен быть указан явно: TYPEDEF FLOAT DISTANCE; ... \( AUTO INT DISTANCE; ... Во втором описании спецификатор типа INT должен присутство-вать, так как в противном случае это описание будет принятоза описание без описателей с типом DISTANCE (прим. Автора:согласитесь, что лед здесь тонок.).