4.3 Компоновка

We use cookies. Read the Privacy and Cookie Policy

4.3 Компоновка

Имя в файловой области видимости, не описанное явно как static, является общим для каждого файла многофайловой прораммы. Таковым же является имя функции. О таких именах говорится, что они внешние. Каждое описание внешнего имени в программе относится к тому же объекту (#5), функции (#8.7), классу (#8.5), перечислению (#8.10) или значению перечислитля (#8.10).

Типы, специфицированные во всех описаниях внешнего имени должны быть идентичны. Может быть больше одного определения типа, перечисления, inline-функции (#8.1) или несоставного const (#8.2), при условии, что определения идентичны, поялются в разных файлах и все инициализаторы являются констанными выражениями (#12). Во всех остальных случаях должно быть ровно одно определение для внешнего имени в программе.

Реализация может потребовать, чтобы составное const, ипользованное там, где не всречено никакого определения const, должно быть явно описано extern и иметь в программе ровно оно определение. Это же ограничение может налагаться на inline -функции.