Видимость внешних объектов
Если функция обращается к идентификатору, описанному как extern, то в каком-нибудь из файлов (либо библиотек), составляющих полную программу, должно быть по крайней мере одно внешнее определение данного идентификатора. Все функции некоторой программы, обращающиеся к одному и тому же внешнему идентификатору, ссылаются тем самым на один объект; поэтому нужно следить, чтобы тип и размер, специфицированные в определении, были совместимы с теми, которые задаются в функциях, обращающихся к данному объекту.
Недопустимо, чтобы совокупность файлов и библиотек, составляющих программу, содержала более одной явной инициализации какого-либо внешнего идентификатора. Однако можно иметь более одного определения любого внешнего идентификатора, не являющегося функцией. Явное использование ключевого слова extern не изменяет смысла внешнего описания.
В ограниченном операционном окружении использование класса памяти extern имеет дополнительный смысл. В таком окружении явное появление ключевого слова extern в описаниях внешних объектов данных, не содержаших инициализаторов, обозначает, что память под эти объекты выделяется не здесь, а где-то в другом месте - либо в данном файле, либо в другом. Требуется, чтобы в програм-
Если функция обращается к идентификатору, описанному как extern, то в каком-нибудь из файлов (либо библиотек), составляющих полную программу, должно быть по крайней мере одно внешнее определение данного идентификатора. Все функции некоторой программы, обращающиеся к одному и тому же внешнему идентификатору, ссылаются тем самым на один объект; поэтому нужно следить, чтобы тип и размер, специфицированные в определении, были совместимы с теми, которые задаются в функциях, обращающихся к данному объекту.
Недопустимо, чтобы совокупность файлов и библиотек, составляющих программу, содержала более одной явной инициализации какого-либо внешнего идентификатора. Однако можно иметь более одного определения любого внешнего идентификатора, не являющегося функцией. Явное использование ключевого слова extern не изменяет смысла внешнего описания.
В ограниченном операционном окружении использование класса памяти extern имеет дополнительный смысл. В таком окружении явное появление ключевого слова extern в описаниях внешних объектов данных, не содержаших инициализаторов, обозначает, что память под эти объекты выделяется не здесь, а где-то в другом месте - либо в данном файле, либо в другом. Требуется, чтобы в программе, составленной из многих файлов и библиотек, было ровно одно определение каждого внешнего идентификатора, не содержащее extern.
Идентификаторы, описанные на верхнем уровне внешних определений как static, невидимы в других файлах. Функции могут быть описаны как static.