Операционная система UNIX. Руководство программиста

       

Лексическая видимость


Область лексической видимости идентификаторов, заданных во внешних определениях, действует, начиная с места определения до конца исходного файла, в котором они встретились. Область лексической видимости идентификаторов, являющихся формальными параметрами функции, есть тело данной функции. Область лексической видимости идентификаторов, описанных при входе в блок, действует до его конца. Область лексической видимости меток - это целиком вся функция, в которой они встретились.

Однако во всех случаях, когда идентификатор явно описан в начале внутреннего блока (это может быть и блок, являющийся телом функции), любое более раннее описание того же идентификатора теряет силу до конца блока.

Напомним также (см. пункт Описания структур и объединений и Описания перечислимых типов в разделе ОПИСАНИЯ), что теги, идентификаторы, сопоставленные простым переменным, и идентификаторы, сопоставленные элементам структур или объединений, образуют три различных непересекающихся класса. Все три класса идентификаторов подчиняются одним и тем же правилам видимости. Имена определяемых типов принадлежат классу обычных идентификаторов. Они могут быть описаны повторно во внутренних блоках с явным указанием типа:

typedef float distance; . . . { int distance; . . .

Во втором описании должно быть указано int, поскольку иначе оно будет воспринято как описание без описателей, состоящее из одного спецификатора типа distance.



Содержание раздела