Внутренние блоки
В языке C блок определяется как составной оператор, заключенный в фигурные скобки, { и }. Внутренний блок определяется как блок, находящийся внутри функции. Сама функция также является блоком.
Если в некотором внутреннем блоке определены локальные имена, то в таблицу имен, непосредственно перед элементом для первого такого имени, будет помещен элемент для специального имени .bb. Равным образом, специальное имя .eb помещается сразу после элемента для последнего в этом блоке локального имени. Пример такой последовательности изображен изображен в следующей таблице:
.bb |
Имена, локальные для этого блока |
.eb |
Поскольку внутренние блоки могут быть вложенными, пары .bb и .eb и соответствующие им элементы таблицы имен также могут быть вложенными. Пусть исходный текст выглядит так:
{ /* Блок 1 */ int i; char c; . . . { /* Блок 2 */ long a; . . . { /* Блок 3 */ int x; . . . } /* блок 3 */ . . . } /* блок 2 */ . . . { /* Блок 4 */ long i; . . . } /* блок 4 */ . . . } /* блок 1 */
Структура соответствующего фрагмента таблицы имен показана ниже:
. . . |
.bb для блока 1 |
i |
c |
.bb для блока 2 |
a |
.bb для блока 3 |
x |
.eb для блока 3 |
.eb для блока 2 |
.bb для блока 4 |
i |
.eb для блока 4 |
.eb для блока 1 |
. . . |