Лексическая область действия

Лексическая область действия идентификаторов, описанныхво внешних определениях, простирается от определения доконца исходного файла, в котором он находится. Лексическаяобласть действия идентификаторов, являющихся формальнымипараметрами, распространяется на ту функцию, к которой ониотносятся. Лексическая область действия идентификаторов,описанных в начале блока, простирается до конца этого блока.Лексической областью действия меток является та функция, вкоторой они находятся. Поскольку все ссылки на один и тот же внешний идентифи-катор относятся к одному и тому же объекту, компилятор про-веряет все описания одного и того же внешнего идентификаторана совместимость; в действительности их область действияраспространяется на весь файл, в котором они находятся. Во всех случаях, однако, если некоторый идентификаторявным образом описан в начале блока, включая и блок, которыйобразует функцию, то действие любого описания этого иденти-фикатора вне блока приостанавливается до конца этого блока. Напомним также, что идентификаторы, соответствующиеобычным переменным, с одной стороны, и идентификаторы, соот-ветствующие членам и ярлыкам структур и объединений, с дру-гой стороны, формируют два непересекающихся класса, которыене вступают в противоречие. Члены и ярлыки структур подчиня-ются тем же самым правилам определения областей действия,как и другие идентификаторы. Имена, специфицируемые спомощью typedef, входят в тот же класс, что и обычные иден-тификаторы. Они могут быть переопределены во внутреннихблоках, но во внутреннем описании тип должен быть указанявно: typedef float distance;... { auto int distance;... Во втором описании спецификатор типа int должен присутство-вать, так как в противном случае это описание будет принятоза описание без описателей с типом distance. -41-


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: