A.1 Имена и область видимости

Предыдущая  Содержание  Следующая V*D*V

ANSI-C определяет, что у имён может быть почти произвольная длина. Имена, начинающиеся с подчёркивания, зарезервированы для библиотек, то есть они не должны использоваться в прикладных программах.

Глобально определяемые имена могут быть скрыты в единице трансляции, то есть в исходном файле, при помощи static:

 

static int f (int x) { ... }     видима только в исходном файле

int g;                           видима всей программе

 

Имена массивов представляют собой постоянные адреса, которые могут использоваться для инициализации указателей даже если массив ссылается сам на себя:

 

struct table { struct table * tp; }

v[] = { v, v+1, v+2 };

 

Не совсем ясно, как можно было бы закодировать опережающую ссылку на объект, который должен всё же быть скрыт в исходном файле. Следующие операции выглядят корректно:

 

extern struct x object;          опережающая ссылка

f() { object = value; }          использование такой ссылки

static struct x object;          скрытое определение

 

Предыдущая  Содержание  Следующая